Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将所有内容放在url中的(子)路径上_Django_Url - Fatal编程技术网

Django 将所有内容放在url中的(子)路径上

Django 将所有内容放在url中的(子)路径上,django,url,Django,Url,我希望我的整个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,而不是通常

我希望我的整个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
。e、 g.管理员应用程序的样式表应该是
/foo/static/admin/css/base.css
,而不是通常的/static/admin/css/base.css




有没有一种优雅的方法可以实现这一点?

只需在
/foo
上安装WSGI应用程序,然后将
静态URL
和/或
媒体URL
设置为
yourdomain.com/foo

我会尝试以下(未经测试的)方法:

  • 在顶级
    url.py
    文件中,有一种模式如下所示:

    urlpatterns=patterns(“”,(r'^foo/”,include('main_url.py'))

  • 然后在
    main\u url.py
    中设置所有正常模式。在
    main\u url.py
    中的所有内容都可以在
    /foo/
    下访问,而不是在
    /
    下访问


  • 假设使用mod_python,请阅读关于在Apache配置文件中使用SetEnv设置“Django.root”的Django文档

    使用该设置,您不需要将装入点添加到url.py中的模式中

    您仍然需要设置静态URL和媒体URL,以包括所示的前缀


    <注意> MyPython已经死亡,Django中的支持被删除并有针对性地删除。如果使用Apache,则应该考虑移动到MODYWSGI。

    你需要做的事情有点取决于你使用的WSGi宿主机制,而你没有说明过。这条线是从HTTPD.CONF回答的吗?“PythonHandler django.core.handlers.modpython”