国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Django實(shí)戰(zhàn)之用戶認(rèn)證(用戶登錄與注銷)

2020-02-15 22:24:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

上一篇中,我們已經(jīng)打開(kāi)了Django自帶的用戶認(rèn)證模塊,并配置了數(shù)據(jù)庫(kù)連接,創(chuàng)建了相應(yīng)的表,本篇我們將在Django自帶的用戶認(rèn)證的基礎(chǔ)上,實(shí)現(xiàn)自己個(gè)性化的用戶登錄和注銷模塊。

首先,我們自己定義一個(gè)用戶登錄表單(forms.py):

from django import formsfrom django.contrib.auth.models import Userfrom bootstrap_toolkit.widgets import BootstrapDateInput, BootstrapTextInput, BootstrapUneditableInput class LoginForm(forms.Form):  username = forms.CharField(    required=True,    label=u"用戶名",    error_messages={'required': '請(qǐng)輸入用戶名'},    widget=forms.TextInput(      attrs={        'placeholder':u"用戶名",      }    ),  )    password = forms.CharField(    required=True,    label=u"密碼",    error_messages={'required': u'請(qǐng)輸入密碼'},    widget=forms.PasswordInput(      attrs={        'placeholder':u"密碼",      }    ),  )    def clean(self):    if not self.is_valid():      raise forms.ValidationError(u"用戶名和密碼為必填項(xiàng)")    else:      cleaned_data = super(LoginForm, self).clean()

我們定義的用戶登錄表單有兩個(gè)域username和password,這兩個(gè)域都為必填項(xiàng)。

接下來(lái),我們定義用戶登錄視圖(views.py),在該視圖里實(shí)例化之前定義的用戶登錄表單

from django.shortcuts import render_to_response,render,get_object_or_404 from django.http import HttpResponse, HttpResponseRedirect from django.contrib.auth.models import User from django.contrib import authfrom django.contrib import messagesfrom django.template.context import RequestContext from django.forms.formsets import formset_factoryfrom django.core.paginator import Paginator, PageNotAnInteger, EmptyPage from bootstrap_toolkit.widgets import BootstrapUneditableInputfrom django.contrib.auth.decorators import login_required from .forms import LoginForm def login(request):  if request.method == 'GET':    form = LoginForm()    return render_to_response('login.html', RequestContext(request, {'form': form,}))  else:    form = LoginForm(request.POST)    if form.is_valid():      username = request.POST.get('username', '')      password = request.POST.get('password', '')      user = auth.authenticate(username=username, password=password)      if user is not None and user.is_active:        auth.login(request, user)        return render_to_response('index.html', RequestContext(request))      else:        return render_to_response('login.html', RequestContext(request, {'form': form,'password_is_wrong':True}))    else:      return render_to_response('login.html', RequestContext(request, {'form': form,}))

該視圖實(shí)例化了之前定義的LoginForm,它的主要業(yè)務(wù)邏輯是:

1. 判斷必填項(xiàng)用戶名和密碼是否為空,如果為空,提示"用戶名和密碼為必填項(xiàng)”的錯(cuò)誤信息

2. 判斷用戶名和密碼是否正確,如果錯(cuò)誤,提示“用戶名或密碼錯(cuò)誤"的錯(cuò)誤信息

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐边县| 北京市| 达拉特旗| 康马县| 南皮县| 方正县| 错那县| 萝北县| 青河县| 靖安县| 安康市| 云和县| 民县| 思南县| 个旧市| 昌江| 和硕县| 乐都县| 郯城县| 中牟县| 喀什市| 区。| 佛山市| 马边| 光泽县| 于田县| 张家口市| 米林县| 乌拉特前旗| 田东县| 延安市| 台东县| 武平县| 云和县| 中宁县| 洛宁县| 桃江县| 两当县| 库伦旗| 绥江县| 怀来县|