10 Nov 2016
前端页面内容
<form action="/login/" method="POST"> \{\% csrf_token \%\} <input name="username" id="UserName" type="text" class="form-control" placeholder="UserName"> <input name="password" id="PassWord" type="password" class="form-control" placeholder="PassWord"> <button type="submit" class="btn btn-primary" >Login In</button> </form>
csrf_token是django的一个密码认证的中间件method是POST,因为要post数据到django,由django相应的views处理action指定的内容就是post的目标urlname为”username”和”password”两个text和一个button\,只是为了转义views功能编写
from django.contrib.auth import authenticate, login, logout @csrf_protect def login_user(request): logout(request) username = password = '' if request.POST: username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) return HttpResponseRedirect('/home/') return render_to_response('devops/login.html', context_instance=RequestContext(request))
request.POST['']中的username和password对应的就是前端页面的text的name前端页面内容
<form class="navbar-form navbar-right inline" method='POST' action="/logout/"> \{\% csrf_token \%\} <button type="submit" class="btn btn-danger">Logout</button> </form>
\,只是为了转义views内容
@login_required def logout_user(request): logout(request) return redirect('login_user')
login_required意思是只有登录的用户才可以访问此功能logout(request),django会自动去找request中的用户信息,然后登出它PS:
若想获取登录用户名称,可直接使用request.user.username