django學習(一) form表單編寫簡單的註冊登入頁
阿新 • • 發佈:2019-02-07
HTML form是互動網頁的支柱。下面來學習一下使用Django自帶 Form表單編寫一個簡單的註冊登入小程式。
一、專案結構如下圖:
re_login是app名
二、編寫程式碼:
1、app下models.py:
#coding:utf-8 from django.db import models # Create your models here. class Register(models.Model): username = models.CharField(max_length = 32,verbose_name = '使用者名稱') password = models.CharField(max_length2、在app下建立一個form.py檔案:= 32,verbose_name = '密碼') email = models.EmailField(verbose_name = '註冊郵箱') phone_number = models.CharField(max_length = 14,verbose_name = '電話號碼')
#coding:utf-8 from django import forms class UserRegister(forms.Form): username = forms.CharField(label='註冊使用者名稱', max_length=100) password1 = forms.CharField(label='設定密碼', widget=forms.PasswordInput()) password2 = forms.CharField(label='確認密碼', widget=forms.PasswordInput()) email = forms.EmailField(label='電子郵件') phone_number = forms.CharField(label='手機號碼',max_length=15) class UserLogin(forms.Form): username = forms.CharField(label='使用者名稱', max_length=100) password = forms.CharField(label='密碼', widget=forms.PasswordInput())
3、app下views.py:
#coding:utf-8 from django.shortcuts import render,render_to_response import hashlib from models import Register from django.template import RequestContext from form import UserLogin,UserRegister # Create your views here. def take_md5(content): hash = hashlib.md5() #建立hash加密例項 hash.update(content) #hash加密 result = hash.hexdigest() #得到加密結果 return result #註冊 def register(request): if request.method == 'POST': form = UserRegister(request.POST) if form.is_valid(): #獲取表單資訊 username = form.cleaned_data['username'] namefilter = Register.objects.filter(username = username) if len(namefilter) > 0: return render_to_response('register.html',{'error':'使用者名稱已存在'}, context_instance=RequestContext(request)) else: password1 = form.cleaned_data['password1'] password2 = form.cleaned_data['password2'] if password1 != password2: return render_to_response('register.html',{'error':'兩次輸入的密碼不一致!'}, context_instance=RequestContext(request)) else: password = take_md5(password1) email = form.cleaned_data['email'] phone_number = form.cleaned_data['phone_number'] #將表單寫入資料庫 user = Register.objects.create(username=username,password=password,email=email, phone_number=phone_number) user.save() return render_to_response('success.html',{'username':username,'operation':'註冊'}, context_instance=RequestContext(request)) else: form = UserRegister() return render_to_response('register.html',{'form':form},context_instance=RequestContext(request)) #登入 def login(request): if request.method == 'POST': form = UserLogin(request.POST) if form.is_valid(): #獲取表單資訊 username = form.cleaned_data['username'] password = form.cleaned_data['password'] password = take_md5(password) namefilter = Register.objects.filter(username=username,password=password) if len(namefilter) > 0: return render_to_response('success.html',{'username':username,'operation':'登入'}, context_instance=RequestContext(request)) else: return render_to_response('login.html',{'error':'該使用者名稱不存在!'}, context_instance=RequestContext(request)) else: form =UserLogin() return render_to_response('login.html',{'form':form}, context_instance=RequestContext(request))
4、urls.py:
....... from re_login.views import register,login urlpatterns = [ ....... url(r'^$',login), url(r'^login/', login), url(r'^register/', register), ]
5、login.html:
<body> <form action="" method="post"> {% csrf_token %} {{ form.as_p }} {{ error }} <input type="submit" value="登入"> <a href="http://127.0.0.1:8000/register/">註冊</a> </form> </body>
6、register.html:
<body> <form action="" method="post"> {% csrf_token %} {{ form.as_p }} {{ error }} <input type="submit" value="註冊"> </form> </body>7、success.html:
<body> <h1>恭喜你,{{ operation }}成功</h1> <a href="http://127.0.0.1:8000/login/">返回登入頁面</a> </body>
至此,一個能實現簡單註冊登入功能的完整程式碼就完成了,頁面的樣式可以自己看著寫