django 使用form驗證使用者名稱和密碼
阿新 • • 發佈:2018-12-30
form驗證可以減少查詢資料庫,所以程式碼先預先驗證,有問題可以返回給前端顯示
1.在users資料夾下新建forms.py檔案,用來驗證使用者名稱和密碼是否為空,密碼長度是否大於6
# -*- coding: utf-8 -*- # 作者:神祕藏寶室 # 日期:2018/12/30 21:56 from django import forms class LoginForm(forms.Form): username = forms.CharField(required=True) password = forms.CharField(required=True, min_length=6)
2.修改views.py下的LoginView的邏輯,當form出問題返回給前端login_form內容
class LoginView(View): def get(self, request): return render(request, 'login.html', {}) def post(self, request): login_form = LoginForm(request.POST) if login_form.is_valid(): user_name = request.POST.get("username", "") pass_word = request.POST.get("password", "") user = authenticate(username=user_name, password=pass_word) if user is not None: login(request, user) return render(request, "index.html") else: return render(request, "login.html", {"msg": u"使用者名稱或者密碼錯誤!"}) else: return render(request, "login.html", {"login_form": login_form})
3.前端顯示錯誤,顯示出錯誤內容
<div class="form-group marb20 {% if login_form.errors.username %}errorput{% endif %}"> <label>用 戶 名</label> <input name="username" id="account_l" type="text" placeholder="手機號/郵箱" /> </div> <div class="form-group marb8 {% if login_form.errors.password %}errorput{% endif %}"> <label>密 碼</label> <input name="password" id="password_l" type="password" placeholder="請輸入您的密碼" /> </div> <div class="error btns login-form-tips" id="jsLoginTips">{% for key,error in login_form.errors.items %} {{ error }} {% endfor %}{{ msg }}</div>
以上程式碼可以實現,錯誤選項的紅框標記,錯誤問題顯示