我希望有多个django项目像这样生活在同一个根url中:
example.com/ # controlled by home django project
example.com/project-2 # controlled by a separate django project
example.com/project-3 # controlled by yet another django project 我已经将LOGIN_REDIRECT_URL等重新定义为suggested by this excellent answer,但我发现了另一个障碍。实际上,我在example.com/ project -2和example.com/project-3的项目中使用了相同的应用程序,这会导致一些链接到django项目内部内容的重要问题,到目前为止,这些问题已经用看似棘手的解决方案解决了。
例如,您永远不能在example.com/ project -2或example.com/ project -3中的任何模板中引用'/‘来返回托管在这些URL中的django项目的根目录--这将链接到位于example.com的home django项目。为了解决这个问题,我制作了一个上下文处理器,它基于自定义的settings.py变量SCRIPT_NAME:'‘( example.com),'/ project -2’(例如,for/project-2),或'/project-3‘(例如,for/project-3),它正确地为项目的根url添加了前面。这一切都很好,只是您需要在get_absolute_url函数中做同样的事情。在我意识到这一点之前,我刚刚把一堆非常可重用的代码(不是我自己)变成了根本无法重用的代码。
有没有一种方法可以实现同样的效果,而不必在SCRIPT_NAME中加上绝对URL呢?也许是用apache或mod_wsgi配置的聪明之处吗?我不知所措,希望有人能帮忙.
编辑:
我对example.com的apache配置如下所示:
# redirect un-'/'-terminated urls to the '/'-terminated root urls
RewriteEngine On
RewriteRule /project-2$ /project-2/ [R=302,L]
RewriteRule /project-3$ /project-3/ [R=302,L]
# mod wsgi setup
WSGIScriptAlias /project-2 /srv/project2/project-2.wsgi
WSGIScriptAlias /project-3 /srv/project3/project-3.wsgi
WSGIScriptAlias / /srv/project1/project-1.wsgi发布于 2011-06-22 11:01:31
您没有展示如何从Apache配置中为这些项目提供服务,这将是非常有用的。但是,如果将它们定义为单独的WSGIScriptAlias指令,那么SCRIPT_NAME将自动传递给您,而Django在逆转和创建URL时会考虑到这一点。
WSGIScriptAlias /project-2 /srv/project2/project2.wsgi
WSGIScriptAlias /project-3 /srv/project3/project3.wsgi
WSGIScriptAlias / /srv/project1/project1.wsgihttps://stackoverflow.com/questions/6438432
复制相似问题