【Python】Django--認證系統-登入註冊
1.modles層 與admin
點選(此處)摺疊或開啟
-
# -*- coding: utf-8 -*-
-
from __future__ import unicode_literals
-
-
from django.db import models
-
from django.contrib.auth.models import AbstractUser
-
from django.utils.encoding import python_2_unicode_compatible
-
-
###普通使用者的資料模型
-
@python_2_unicode_compatible
-
class NewUser(AbstractUser):
-
profile = models.CharField('profile', default='', max_length=256)
-
-
def __str__(self):
-
return self.username
- # Create your models here.
##admin
# -*- coding: utf-8 -*-
from django.contrib import admin from .models import NewUser class NewUserAdmin(admin.ModelAdmin): list_display = ('username','date_joined', 'profile') admin.site.register(NewUser,NewUserAdmin)
2.setting設定newuser管理系統賬號進行驗證
- AUTH_USER_MODEL = "pric.NewUser"
3 views檢視層
-
# -*- coding: utf-8 -*-
-
from django.shortcuts import render
-
from .forms import *
-
from .models import *
-
from django.contrib.auth import authenticate, login, logout
-
from django.http import HttpResponse
-
from django.shortcuts import render, redirect,render_to_response
-
from django.core.exceptions import ObjectDoesNotExist
-
from django.contrib.auth.decorators import login_required
-
-
-
-
@login_required
-
def index(request):
-
return render_to_response('index.html', locals())
-
-
-
-
-
###登入
-
def log_in(request):
-
if request.method == 'GET':
-
form = LoginForm()
-
return render(request, 'login.html', {'form': form})
-
if request.method == 'POST': # 當提交表單時
-
form = LoginForm(request.POST) # form 包含提交的資料
-
if form.is_valid(): # 如果提交的資料合法
-
username = form.cleaned_data['uid']
-
password = form.cleaned_data['pwd']
-
user = authenticate(username=username, password=password)
-
if user is not None: ###如果使用者驗證存在,
-
login(request, user) #開始登入
-
return redirect('index') #跳轉首頁
-
else:
-
return render(request, 'login.html', {'form': form, 'msg': "password or username is not ture!"})
-
-
else: ###如果提交的資料不合法,繼續登入
-
return render(request, 'login.html', {'form': form})
-
-
###登出
-
@login_required
-
def log_out(request):
-
logout(request)
-
return redirect('login')
-
# Create your views here.
-
-
###註冊
-
def register(request):
-
error1 = "this name is already exist"
-
valid = "this name is valid"
-
-
if request.method == 'GET':
-
form = RegisterForm()
-
return render(request, 'register.html', {'form': form})
-
if request.method == 'POST': ###提交
-
form = RegisterForm(request.POST)
-
if form.is_valid():
-
username = form.cleaned_data['username']
-
email = form.cleaned_data['email']
-
password1 = form.cleaned_data['password1']
-
password2 = form.cleaned_data['password2']
-
if password1 != password2:
-
return render(request, 'register.html', {'form': form, 'msg': "two password is not equal"})
-
else:
-
NewUser.objects.create_user(username=username,password=password1,email=email)
-
#user = NewUser(username=username, email=email, password=password1)
-
#user.save()
-
# return render(request, 'login.html', {'success': "you have successfully registered!"})
-
return redirect('login')
-
else:
- return render(request, 'register.html', {'form': form})
4 首頁獲取當前登入使用者
-
-
方式一:
前端request.user.is_authenticated()判斷當前使用者是否登入
-
<form class="form-signin" role="form" method='post'>
- <h2 class="form-signin-heading">Welcome!>
-
{% if request.user.is_authenticated %}
-
hihi: {{ request.user }} </br>
-
<a href="{% url 'log_out' %}">登出</a>
- {% endif %}
-
- </form>
方式二 將request.user.is_authenticated判斷寫入views檢視再傳入html中
-
@login_required
-
def index(request):
-
if request.user.is_authenticated(): # 判斷使用者是否已登入
-
user = request.user;
-
return render_to_response('index.html', locals())
-
-
-
-
<form class="form-signin" role="form" method='post'>
-
<h2 class="form-signin-heading">Welcome!>
- 歡迎登入!{{ user }}
-
<a href="{% url 'log_out' %}">登出</a>
-
-
- </form>
###本節學習的重點就是authenticate認證
參考官方文件:
http://www.cnblogs.com/holbrook/archive/2012/02/10/2357345.html
----詳細
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2134408/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- React & Redux 實現註冊登入認證系統(31 個視訊)ReactRedux
- Django 使用者認證系統:註冊Django
- 認證系統之登入認證系統的進階使用 (二)
- js登入與註冊驗證JS
- vue登入註冊,帶token驗證Vue
- 一個註解搞定登入註冊、實名認證及購買vip等業務流程
- 建站篇-使用者認證系統-自定義登入系統
- Ubuntu部署Maxkey單點登入認證系統Ubuntu
- 系統登入認證流程對比(cookie方式與jwt)CookieJWT
- 在windows透過作業系統認證登入ORACLEWindows作業系統Oracle
- 在windows通過作業系統認證登入ORACLEWindows作業系統Oracle
- javaWeb登入註冊頁面JavaWeb
- 個人作業登入+註冊
- 【連線】禁止以作業系統認證方式登入資料庫作業系統資料庫
- Flask Session 登入認證模組FlaskSession
- passport API 認證 -- 多表登入PassportAPI
- 使用redis完成註冊和登入Redis
- APP「登入註冊模組」詳解APP
- laravel使用者登入註冊Laravel
- "留拍"-註冊/登入詳解
- 【登陸認證】oracle的作業系統認證和口令檔案認證方式(轉載)Oracle作業系統
- Laravel 6.x 為註冊或登入元件新增驗證碼Laravel元件
- 直播app系統原始碼,簡單的登入介面(登入、註冊、記住密碼等按鍵)APP原始碼密碼
- bootstrap4登入註冊頁面boot
- Redis使用認證密碼登入Redis密碼
- SSH認證免密碼登入密碼
- JWT登入認證-專案BotBattleJWTBAT
- Luffy /4/ 多方式登入介面&登入註冊前端頁面前端
- 登入介面:從資料庫中獲取資訊驗證登入(與註冊介面相聯絡)資料庫
- Django登入(含隨機生成圖片驗證碼)註冊例項Django隨機
- 系統多種使用者角色認證登入授權如何實現?
- 9.Django之登陸註冊驗證登出Django
- python驗證登入Python
- 用mvp模式實現登入註冊的統一校驗MVP模式
- 小程式開發:python sanic 實現小程式登入註冊Python
- 直播系統app原始碼,Android studio 實現app登入註冊頁面APP原始碼Android
- node+ajax+mysql實現登入註冊MySql
- go-zero學習之註冊登入Go