我在/ test中有一个Django项目
WSGIScriptAlias /test /var/www/test/test/django.wsgi
它工作正常,但在重定向页面中,如注销 - >登录,它转到:
127.0.0.1/accounts/login
所以我没有这个网址,它必须重定向到这个网址:
127.0.0.1/test/accounts/login
我设置为 settings.py :
LOGIN_URL = "/test/accounts/login/"
我的 urls.py :
url(r'^accounts/login/$',login,name="login"),
并且它不再起作用。
我该如何解决? 感谢
答案 0 :(得分:2)
将SUB_STIE
添加到settings.py:
# settings.py
SUB_SITE = "/test/"
然后在settings.py
:
urlpatterns = patterns('',
(r'^%s/' % settings.SUB_SITE, include('urls_subsite')),
)
更多信息:
另一种选择是在urls.py
:
if settings.URL_PREFIX:
prefixed_urlpattern = []
for pat in urlpatterns:
pat.regex = re.compile(r"^%s/%s" % (settings.URL_PREFIX[1:], pat.regex.pattern[1:]))
prefixed_urlpattern.append(pat)
urlpatterns = prefixed_urlpattern
更多信息:
但我个人认为第一种解决方案要好得多。
答案 1 :(得分:1)
我不相信你应该在同一个过程中运行一个“子”网站,重写模式,如@IgorChubin建议的答案, 应该是app。< / p>
如果确实希望在同一个域上运行两个站点,即使他们都使用Django ,也要运行单独(虚拟)服务器
如果您真的必须这样做,请使用服务器配置重写特定网址并运行单独的进程
IMO,显而易见的选择是:
然后可能使用Django站点框架来合并后一个选项的管理任务。
答案 2 :(得分:0)
我使用的一个简单答案是,
from django.http import HttpResponse, HttpResponseRedirect
# hook for testing in local server, compatible with server deployment
def redirect_to_xkcd( request, everythingelse ):
return HttpResponseRedirect( "/"+everythingelse, request )
并将此行添加到urlpatterns
url(r'test/(?P<everythingelse>.+)', redirect_to_xkcd ),