2012-09-06 32 views
0

Hello?我试图在django登录后将特定用户重定向到自定义页面。管理员将被定向到他们通常的管理界面,而这个特定的用户将转到他们自己的自定义页面。 我已经在我的意见登录后将用户重定向到基于用户名的自定义url Django

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

我已经指出在urls.py账户/登录网址custLogin如下

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

编写这些代码并把它放在我却不断收到错误

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

任何指针?

回答

0

也许,您应该使用redirect快捷方式(返回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。请参阅documentation以获取更多信息

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

0
在你的模板

,你可能已经忘记了做

{% load from future url %} 

在模板的beggining,使用时,这是有用的:

{% url 'name_of_my_url_inurl.py' %} 
0

对于每个用户重定向到自己的页面使用reverse

首先创建接受参数的url路由。它描述here

和重定向像

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

其中拱总结 - 名为url,并在列表ARGS - 它的参数。示例here

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

相关问题