Поместить все в (суб) путь в URL - PullRequest
3 голосов
/ 09 января 2012

Я хочу, чтобы весь мой проект Django находился по (под) пути foo в домене.

localhost:8000/foo/admin вместо localhost:8000/admin

localhost:8000/foo/myapp/ вместо localhost:8000/myapp

Я вижу три части:

1) Измените рассылку URL.Например, /foo/admin, должен указывать на правильные представления.

2) Исправить ссылки (на CSS, другие страницы и т. Д.) В шаблонах.Например, шаблоны приложения администратора должны указывать на /foo/static/admin/css/base.css вместо обычного /static/admin/css/base.css.

3) Все статическое содержимое также должно быть на /foo.например, таблица стилей приложения администратора должна быть на /foo/static/admin/css/base.css вместо обычного /static/admin/css/base.css.

Есть ли элегантный способ добиться этого?

Ответы [ 3 ]

1 голос
/ 09 января 2012

Предполагая использование mod_python, прочитайте документацию Django о настройке django.root с помощью SetEnv в файле конфигурации Apache.

https://docs.djangoproject.com/en/1.3/howto/deployment/modpython/

С этим набором вам не нужно добавлять точку монтирования в шаблоны в urls.py.

Вам все еще нужно будет установить STATIC_URL и MEDIA_URL, чтобы включить префикс, как указал Даниэль.

Обратите внимание, что mod_python устарел и поддержка в Django устарела и предназначена для удаления. Если вы используете Apache, вы должны вместо этого перейти на mod_wsgi.

1 голос
/ 09 января 2012

Просто установите приложение WSGI на /foo и установите STATIC_URL и / или MEDIA_URL на yourdomain.com/foo.

0 голосов
/ 09 января 2012

Я бы попробовал следующий ( непроверенный ) метод:

  1. В вашем файле верхнего уровня urls.py есть один шаблон, который выглядит следующим образом:

    urlpatterns = patterns('', (r'^foo/', include('main_urls.py'))

  2. А затем включите все ваши обычные шаблоны в main_urls.py. Все в main_urls.py будет доступно под /foo/, а не под /.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...