django重定向到应用程序外的视图

时间:2015-02-17 03:51:54

标签: python django redirect

我有一个带有两个应用程序的django项目,users用于登录/注销,timeline用于主要功能。我需要将从users.log_in登录的用户重定向到timeline.dashboard视图。但它不起作用,我看到的只有404.

正如我在浏览器中看到的那样,Django想要打开http://localhost:8000/users/login/timeline.dashboard而不是http://localhost:8000/timeline/dashboard/

那我该怎么办?

如果需要 - 这是我的代码:

项目的urls.py

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^timeline/', include('timeline.urls')),
    url(r'^users/', include('users.urls')),
)

时间轴/ urls.py

urlpatterns = patterns(
    'timeline.views',
    url(r'^$', views.index, name='index'),
    url(r'^dashboard/$', views.dashboard, name='dashboard'),
)

用户/ views.py:

def log_in(request):
    if request.method=='GET':
        return render(request,
            'login.html')
    if request.method=='POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
            login(request,user)
            return redirect('timeline.dashboard')
        else:
            return redirect('log_in')

app_name.view_name语法重定向args是我自己发明的,显然是错误的,但我在官方文档中看不到任何有用的东西。

谢谢!

2 个答案:

答案 0 :(得分:3)

https://docs.djangoproject.com/en/1.7/topics/http/shortcuts/#redirect

以下是尝试的3件事。

  1. 模型:将调用模型的get_absolute_url()函数。
  2. 视图名称,可能带参数:urlresolvers.reverse将用于反向解析名称。
  3. 绝对或相对网址,将用作重定向位置的原样。
  4. 尝试编号1和2未返回URL,因此redirect使用了第三种解释输入的方法:原样,作为相对URL。

    您可能打算匹配2. A view name,在这种情况下只是dashboard

    这个混淆来自于这个函数尝试多个URL查找方法并隐藏错误(并在某种程度上模糊了文档)。

    有关#2的直接文档,请查看reverse

    的文档

    https://docs.djangoproject.com/en/1.7/ref/urlresolvers/#django.core.urlresolvers.reverse

答案 1 :(得分:-1)

您是否在独立模式下运行django?最佳实践是使用WSGI将django部署到apache中,并在httpd.conf中设置WSGI以将请求路由到具体应用程序以进行跨应用程序工作。