Django中的默认重定向url

时间:2014-01-04 07:59:33

标签: python django apache redirect

我在/ 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"),

并且它不再起作用。

我该如何解决? 感谢

3 个答案:

答案 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 ),