首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一个url上的多个django项目

同一个url上的多个django项目
EN

Stack Overflow用户
提问于 2011-06-22 10:33:36
回答 1查看 1.1K关注 0票数 1

我希望有多个django项目像这样生活在同一个根url中:

代码语言:javascript
复制
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配置如下所示:

代码语言:javascript
复制
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-22 11:01:31

您没有展示如何从Apache配置中为这些项目提供服务,这将是非常有用的。但是,如果将它们定义为单独的WSGIScriptAlias指令,那么SCRIPT_NAME将自动传递给您,而Django在逆转和创建URL时会考虑到这一点。

代码语言:javascript
复制
WSGIScriptAlias /project-2 /srv/project2/project2.wsgi
WSGIScriptAlias /project-3 /srv/project3/project3.wsgi
WSGIScriptAlias / /srv/project1/project1.wsgi
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6438432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档