我正在使用Bitnami DjangoStack(包括django,apache和mySQL)在我的本地Windows 7机器上构建一个django网站。
该项目名为" MyProject" 目前我的网址看起来像: 本地主机/ MyProject的/ 本地主机/ MyProject的/登录/ 本地主机/ MyProject的/管理/ 每当我使用HttpResponseRedirect(' / login /')进行重定向时(这是我一直在看的教程表明我应该这样做)我最终选择" localhost / login"哪个不起作用,所以为了纠正这个问题,我一直在使用HttpResponseRedirect(' / MyProject / login /')代替,这确实有效。
我希望我已完成的项目位于" http://www.MyProject.com",并且有像www.MyProject.com/login这样的网页,但我似乎已将其配置为最终与" www.SomeDomain.com/MyProject/login"。 HttpResponseRedirect(' / MyProject / login /')对我想要做的事情有效,还是应该将settings.py配置为不同的东西?非常感谢。
答案 0 :(得分:3)
首先,你不应该在Django代码中硬编码url字符串(既不是模板也不是视图),而是使用Django URL Dispatcher
urls.py
urlpatterns = patterns('',
#...
url(r'^articles/(\d{4})/$', 'news.views.year_archive'),
#...
)
views.py
return HttpResponseRedirect(reverse('news.views.year_archive', args=(year,)))
要解决您的问题,您的主urls.py可以包含您的其他项目网址,如下所示,这将在我们所有包含的项目网址之前添加SITE_BASE_URL。
SITE_BASE_URL = '/MyProject/'
urlpatterns = patterns('',
# ... snip ...
url(r'{site_base}'.format(site_base=SITE_BASE_URL), include('project.urls')),
# ... snip ...
)
现在您可以简单地使“SITE_BASE_URL”环境具体化。您可以使用设置文件(可以在生产环境或本地环境中保持不同)或将其作为Apache本身的环境变量传递,参考号:http://drumcoder.co.uk/blog/2010/nov/12/apache-environment-variables-and-mod_wsgi/。