如何阻止django跳过用户的登录页面?
用户没有机会登录。它只是重定向到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/")
使用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装饰一个简单的例子:
- 用户键入其浏览器的URL
http://localhost:8000/my_view
- 此网址的观点有一个@login_required,用户重定向到登录页面:
http://localhost:8000/login/?next=/my_view/
- 用户再次登录后,他/她自动重定向到
/my_view/
。
我想有一个登录页面的第一页,而不是它是谁尚未登录人们重定向页面。另外,我没有看到默认LOGIN_URL settings.py中定义的地方吗?我创建了一个login.html页面,其中包含一个供用户登录的表单,我希望他们在登录视图时看到该页面。 –
你是什么意思:“我想有一个登录页面作为第一页”?你的意思是你想将url http:// localhost:8000 /映射到登录页面吗? login_required()装饰器将在用户登录后将用户重定向到原始URL。至于LOGIN_URL,您需要手动将其添加到settings.py –
错误消息表明'/ pk/invalid /'没有模式。你能向我们展示URLconf吗? – j0ker
是包含在你的主要urlConf中的namekeepr.urls? – MattoTodd