2011-09-21 81 views
0

用戶沒有機會登錄。它只是重定向到404頁:如何阻止django跳過用戶的登錄頁面?

獲取此404錯誤:

沒有找到

頁(404) 請求方法:GET 請求URL:http://127.0.0.1:8000/pk/invalid/

使用namekeepr.urls定義的URL配置, Django按以下順序嘗試了這些URL模式: 當前URL pk/invalid /與這些URL中的任何一個都不匹配。

這是我的views.py文件:

# Login Page 
def login(request): 
    username = request.POST.get('username', '') 
    password = request.POST.get('password', '') 
    user = authenticate(username=username, password=password) 
    if user is not None and user.is_active: 
     # Correct password, and the user is marked "active" 
     auth.login(request, user) 
     # Redirect to a success page. 
     return HttpResponseRedirect("/pk/loggedin/") 
    else: 
     # Show an error page 
     return HttpResponseRedirect("/pk/invalid/") 
+0

錯誤消息表明'/ pk/invalid /'沒有模式。你能向我們展示URLconf嗎? – j0ker

+0

是包含在你的主要urlConf中的namekeepr.urls? – MattoTodd

回答

1

使用login_required()裝飾爲您的視圖功能。

https://docs.djangoproject.com/en/1.3/topics/auth/#django.contrib.auth.decorators.login_required

from django.contrib.auth.decorators import login_required 

@login_required 
def my_view(request): 
    ... 

默認情況下將重定向用戶到你的settings.py LOGIN_URL定義。

下面是從用戶的角度來看會發生什麼,當你使用@login_required裝飾一個簡單的例子:

  1. 用戶鍵入其瀏覽器的URL http://localhost:8000/my_view
  2. 此網址的觀點有一個@login_required,用戶重定向到登錄頁面:http://localhost:8000/login/?next=/my_view/
  3. 用戶再次登錄後,他/她自動重定向到/my_view/
+0

我想有一個登錄頁面的第一頁,而不是它是誰尚未登錄人們重定向頁面。另外,我沒有看到默認LOGIN_URL settings.py中定義的地方嗎?我創建了一個login.html頁面,其中包含一個供用戶登錄的表單,我希望他們在登錄視圖時看到該頁面。 –

+1

你是什麼意思:「我想有一個登錄頁面作爲第一頁」?你的意思是你想將url http:// localhost:8000 /映射到登錄頁面嗎? login_required()裝飾器將在用戶登錄後將用戶重定向到原始URL。至於LOGIN_URL,您需要手動將其添加到settings.py –

相關問題