0

你好?一旦他们登录 django,我试图将特定用户重定向到自定义页面。管理员将被定向到他们通常的管理界面,而该特定用户将转到他们自己的自定义页面。我已经编写了这段代码并将其放在我的视图中

def custLogin(request):
    if request.user.username == '***':
        return HttpResponseRedirect('http://********************.html')
    else:
        return login(request,template_name='login.html')

我已将 urls.py 中的帐户/登录 url 指向 custLogin,如下所示

(r'^accounts/login/', custLogin),

但是我不断收到错误

Caught NoReverseMatch while rendering: Reverse for 'django.contrib.auth.views.login' with arguments '()' and keyword arguments '{}' not found.

请问有什么指点吗?

4

3 回答 3

0

也许,您应该使用重定向快捷方式,它返回一个,在视图处理HttpResponseRedirect后将您的用户指向不同的地方。custLogin

from django.shortcuts import redirect
def custLogin(request):
    if request.user.is_staff:
        return redirect('/some/admin/url')
    else:
        return redirect('/some/regular/user/url')

如文档所述,您可以通过redirect()多种方式使用该函数:通过传递视图名称、对象或 url。有关更多信息,请参阅文档

请注意,我使用is_staff用户字段来确定:用户是否是管理员。

于 2012-09-06T13:06:58.883 回答
0

在您的模板中,您可能忘记在模板开头执行此操作:

{% load from future url %}

这在使用时很有用:

{% url 'name_of_my_url_inurl.py' %}
于 2012-09-06T13:10:10.990 回答
0

为了将每个用户重定向到他自己的页面,请使用reverse

首先创建接受参数的 url 路由。这里有描述

并像重定向一样

return HttpResponseRedirect(reverse('arch-summary', args=[1945]))

其中arch-summary - 命名为 url,在列表args中- 它的参数。这里的例子

要区分管理员用户和普通用户,请在视图中检查并重定向到不同的 url。

于 2012-09-06T13:18:17.297 回答