我希望我的整个Django项目位于域上的(子)路径foo
上。
localhost:8000/foo/admin
代替localhost:8000/admin
localhost:8000/foo/myapp/
,而不是localhost:8000/myapp
我看到三个部分:
1)更改网址分派。例如。 /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。
有没有一种优雅的方法来实现这一目标?
答案 0 :(得分:1)
只需在/foo
安装您的WSGI应用,然后将STATIC_URL
和/或MEDIA_URL
设置为yourdomain.com/foo
。
答案 1 :(得分:1)
关于使用mod_python的假设,请阅读有关在Apache配置文件中使用SetEnv设置'django.root'的Django文档。
https://docs.djangoproject.com/en/1.3/howto/deployment/modpython/
使用该集合,您不需要将挂载点添加到urls.py中的模式中。
您仍然需要设置STATIC_URL和MEDIA_URL以包含Daniel指示的前缀。
请注意,mod_python已经死亡,Django中的支持已弃用,并且目标是删除。如果使用Apache,则应考虑转而使用mod_wsgi。
答案 2 :(得分:0)
我会尝试以下(未经测试的)方法:
在您的顶级urls.py
文件中有一个如下所示的模式:
urlpatterns = patterns('', (r'^foo/', include('main_urls.py'))
然后在main_urls.py
中拥有所有正常模式。 main_urls.py
中的所有内容都可以在/foo/
下访问,而不是在/
下访问。