Django:验证用户登录返回无

时间:2017-02-12 03:34:09

标签: python django authentication login

我正在尝试创建登录表单。在login.html中,当用户输入用户名和密码时,它就成了用户对象。如果有返回,它应该重定向到loggedin.html,如果有,它应该重定向到invaild.html。然而,它一直没有返回。

这是我的setting.py

#Authentication backends
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
)

#added for login authentification
LOGIN_REDIRECT_URL = 'home'

urls.py

#user auth url
url(r'^login/$', auth_views.login, {'template_name': 'forum/login.html'}, name='login'),
url(r'^auth/$', views.auth_view, name='auth'),
url(r'^logout/$', auth_views.logout, {'template_name': 'forum/logout.html'}, name='logout'),
url(r'^loggedin/$', views.loggedin, name='loggedin'),

Model.py

from django.contrib import auth
from django.contrib.auth import logout, authenticate
from django.http.response import HttpResponseRedirect
from django.shortcuts import render
from django.template import context
from django.template.context_processors import request, csrf

from forum.models import Article


def login(request):
   c = {}
   c.update(csrf(request))
   return render(request, 'forum/login.html', c)

def auth_view(request):
   name = request.POST.get('name', '')
   password = request.POST.get('password', '')
   user = auth.authenticate(username=name, password=password)
   print(user)
   if user is not None:
       auth.login(request, user)
       return HttpResponseRedirect('/loggedin.html')
   else:
       return HttpResponseRedirect('/invalid.html')

 def base(request):
   return render(request, 'forum/base.html', context)

 def loggedin(request):
   return render(request, 'forum/loggedin.html', {'name': request.user.name})

 def logout(request):
   return render(request, 'forum/logout.html')

的login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
{% block title %}Login{% endblock %}
{% if from.errors %}
not valid name or password
{% endif %}
{% block content %}
<h2>Login</h2>
<form action="{% url 'forum:auth' %}" method="post">
{% csrf_token %}
 name
 <input type="text" name="name" id="name" value=""/>
 password
 <input type="text" name="password" id="password" value=""/>
 <input type="submit" value="login"/>
 </form>
 {% endblock %}
 </body>
 </html>

0 个答案:

没有答案