1. 程式人生 > >django學習(一) form表單編寫簡單的註冊登入頁

django學習(一) form表單編寫簡單的註冊登入頁

       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_length 
= 32,verbose_name = '密碼') email = models.EmailField(verbose_name = '註冊郵箱') phone_number = models.CharField(max_length = 14,verbose_name = '電話號碼')
2、在app下建立一個form.py檔案:
#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>

至此,一個能實現簡單註冊登入功能的完整程式碼就完成了,頁面的樣式可以自己看著寫