Проблема, с которой я недавно столкнулся, и, хотя я решил ее, я хотел бы услышать ваше мнение о том, каким будет правильное / простое / принятое решение.
Я занимаюсь разработкой сайта с использованием Django + python. Когда я запускаю его на локальном компьютере с помощью «python manage.py runserver», локальный адрес по умолчанию http://127.0.0.1:8000/.
Однако на рабочем сервере у моего приложения есть другой URL с указанием пути, например "http://server.name/myproj/"
Мне нужно создать и использовать постоянные URL. Если я использую {% url view params%}, я получаю пути, относящиеся к /, поскольку мой urls.py содержит это
urlpatterns = patterns('',
(r'^(\d+)?$', 'myproj.myapp.views.index'),
(r'^img/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT + '/img' }),
(r'^css/(.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT + '/css' }),
)
Пока я вижу 2 решения:
- изменить urls.py, включить '/ myproj /' в случае производственного запуска
- используйте
request.build_absolute_uri()
для создания ссылки в views.py или передайте некоторую переменную с 'hostname: port / path' в шаблонах
Есть ли более красивые способы решения этой проблемы? Спасибо.
Обновление : Ну, похоже, проблема не в django, а в способе webfaction для настройки wsgi. Конфигурация Apache для приложения с URL "hostname.com/myapp" содержит следующую строку
WSGIScriptAlias / /home/dreamiurg/webapps/pinfont/myproject.wsgi
Итак, SCRIPT_NAME пуст, и единственное решение, которое я вижу, - это получить mod_python или обслуживать мое приложение из root. Есть идеи?