2012-09-06 61 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。

相關問題