我正在将一个项目移动到新托管,并希望将其设置为位于mysite.com/test/(这是在Apache服务器上的mod_wsgi下)。这似乎对应用程序本身没有问题,但是当我使用@login_required强制执行身份验证时,Django会根据我的意愿重定向到mysite.com/accounts/login而不是mysite.com/test/accounts/login。我也有一个mysite.com/prod,我想做同样的事情,所以我不想在设置的任何地方硬编码...它应该找出其URL的根目录并相应地采取行动。
如何设置它以便Django自动重定向到Apache认为该应用程序的Web根目录?
答案 0 :(得分:4)
您需要在Django设置文件中将LOGIN_URL和LOGOUT_URL设置为完整的URL路径。参见:
http://docs.djangoproject.com/en/1.3/ref/settings/#login-url
Django不会在开头点自动插入挂载点,因为必须完全限定。
答案 1 :(得分:0)
对于所有项目URL,可以以更通用的方式解决相同的问题。您可以在Running a Django site on my local machine, am I redirecting my URLs properly?签出替代解决方案,以获取基于环境的ROOT URL支持。