Django登入、註冊和修改密碼簡單頁面實現
阿新 • • 發佈:2019-02-03
1、建立Model
userpw/models.py
from django.db import models import hashlib # Create your models here. class User(models.Model): username = models.CharField(max_length=30) password = models.CharField(max_length=50) last_login = models.DateTimeField(blank=True) def __unicode__(self): return self.username
2、建立View
userpw/views.py
# -*- coding: utf-8 -*- from django.http import HttpResponse,HttpResponseRedirect from django.shortcuts import render_to_response ,RequestContext from django import forms from userpw.models import User # Create your views here. ##定義了UserForm表單用於註冊和登入頁面,ChangeForm表單用於修改密碼頁面 class UserForm(forms.Form): username = forms.CharField(label='使用者名稱') password = forms.CharField(label='密 碼',widget=forms.PasswordInput()) #last_login = forms.DateTimeField() class ChangeForm(forms.Form): username = forms.CharField(label='使用者名稱') old_password = forms.CharField(label='原密碼',widget=forms.PasswordInput()) new_password = forms.CharField(label='新密碼',widget=forms.PasswordInput()) def regist(request): if request.method == 'POST': uf = UserForm(request.POST) if uf.is_valid(): username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] ##判斷使用者原密碼是否匹配 user = User.objects.filter(username = username) if user: info = '使用者名稱已存在!' elif len(user) == 0: info = '註冊成功!' user = User() user.username = username user.password = password user.save() return HttpResponse(info) else: uf = UserForm() return render_to_response('regist.html', {'uf': uf}) def login(request): if request.method == 'POST': ##獲取表單資訊 uf = UserForm(request.POST) if uf.is_valid(): username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] ##判斷使用者密碼是否匹配 user = User.objects.filter(username = username) if user: passwd = User.objects.filter(username = username, password = password) if passwd: info = '登入成功!' else: info = '請檢查密碼是否正確!' elif len(user) == 0: info = '請檢查使用者名稱是否正確!' return HttpResponse(info) else: uf = UserForm() return render_to_response('login.html', {'uf': uf}) def change_pass(request): if request.method == 'POST': uf = ChangeForm(request.POST) if uf.is_valid(): username = uf.cleaned_data['username'] old_password = uf.cleaned_data['old_password'] new_password = uf.cleaned_data['new_password'] ##判斷使用者原密碼是否匹配 user = User.objects.filter(username = username) if user: passwd = User.objects.filter(username = username , password = old_password ) if passwd: User.objects.filter(username = username,password = old_password).update(password = new_password) ##如果使用者名稱、原密碼匹配則更新密碼 info = '密碼修改成功!' else: info = '請檢查原密碼是否輸入正確!' elif len(user) == 0: info = '請檢查使用者名稱是否正確!' return HttpResponse(info) else: uf = ChangeForm() return render_to_response('change.html',{'uf':uf})
3、建立Template模板
userpw/template/regist.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>regist</title> </head> <body> <h1>regist</h1> <form method="post" enctype="multipart/form-data" > {{uf.as_p}} <input type="submit" value="註冊"/> </form> </body> </html>
userpw/template/login.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>login</title>
</head>
<body>
<h1>login</h1>
<form method="post" enctype="multipart/form-data" >
{{uf.as_p}}
<input type="submit" value="登入"/>
</form>
</body>
</html>
userpw/template/change.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Change Password</title>
</head>
<body>
<h1>Change Password</h1>
<form method="post" enctype="multipart/form-data" >
{{uf.as_p}}
<input type="submit" value="修改密碼"/>
</form>
</body>
</html>