自帶登陸實例html
{% extends "layout/base.html" %} // 全部link {% block body %} <div id="container" class="cls-container"> <!-- BACKGROUND IMAGE --> <!--===================================================--> <div id="bg-overlay" class="bg-img" style="background-image: url(img/bg-img-3.jpg)"></div> <!-- LOGIN FORM --> <!--===================================================--> <div class="cls-content"> <div class="cls-content-sm panel"> <div class="panel-body"> <div class="mar-ver pad-btm"> <h1 class="h3">LuffyAudit 堡壘機</h1> <p>Sign In to your account</p> </div> <form method="POST">{% csrf_token %} <div class="form-group"> <input type="text" name="username" class="form-control" placeholder="Username" autofocus> </div> <div class="form-group"> <input type="password" name="password" class="form-control" placeholder="Password"> </div> <button class="btn btn-primary btn-lg btn-block" type="submit">Sign In</button> <span style="color:red;">{{ error }}</span> </form> </div> <div class="pad-all"> <a href="#" class="btn-link mar-rgt">Forgot password ?</a> <a href="#" class="btn-link mar-lft">Create a new account</a> </div> </div> </div> <!--===================================================--> </div> <!--===================================================--> <!-- END OF CONTAINER --> {% endblock %}
from django.db import models from django.contrib.auth.models import User class Account(models.Model): """ 堡壘機帳戶 1.擴展 2.繼承 """ user = models.OneToOneField(User, models.CASCADE) name = models.CharField(max_length=64)
LOGIN_URL = '/login/'
from django.shortcuts import render,redirect,HttpResponse from django.contrib.auth import authenticate,login,logout from django.contrib.auth.decorators import login_required # @login_required(login_url='/login/') # 單獨添加login頁面的url # 或在settings.py設置全局LOGIN_URL = '/login/' @login_required def index(request): return HttpResponse("成功登陸index頁面!") return render(request,"index.html") def acc_login(request): error = '' if request.method == "POST": username = request.POST.get("username") password = request.POST.get("password") user = authenticate(username=username,password=password) # 認證 if user: login(request,user) # 登陸 return redirect(request.GET.get('next') or "/index/") # 如有next字段,則跳轉到該url,不然index頁面 else: error = "Wrong username or password" return render(request,"login.html",{"error":error}) @login_required def acc_logout(request): logout(request) # 登出 return redirect("/login/")
結果:django
單獨登陸login頁面ide
直接訪問index頁面,views裏的login_required裝飾器會跳轉到login頁面,同時會帶有?next=/index/字段的url函數
此處需在login函數裏配置ui
return redirect(request.GET.get('next') or "/index/")
成功登陸url