Django1.11 使用者註冊登入(1)
阿新 • • 發佈:2019-01-11
添加註冊登入這個功能,我們就要用到models ,views ,url ,templates。
templates 模板
我們先寫兩個 html 頁面。
register
<form action="{% url 'register' %}" method="post" accept-charset="utf-8"enctype="multipart/form-data" >
{% csrf_token %}
<input type="text" name="username"id="username" placeholder="請輸入手機號" >
<input type ="password" name="password" id="password" placeholder="請輸入6-12位密碼" >
<input type="submit" class="submit" value="立即註冊">
</form>
login
<form action="{% url 'login' %}" method="post" accept-charset="utf-8" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" name="username" id="username" placeholder="手機號碼" >
<input type="password" name="password" id="password" placeholder="登陸密碼" value="" >
<input type="submit" value="立即登入">
</form>
將以上表單貼入html
action=”{% url ‘login’ %}” 以及action = {% url ‘register’ %},關聯的是 urls.py 檔案中 url()的name屬性的全域性作用。
models.py 建立資料庫表格
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=21)
password= models.CharField(max_length=21)
建立一個User表格,再資料庫裡的表格名 為 APP名 + User。如app 名為 taobao , 表格名為 taobao_user
建立一個表單的樣式
在app 下建立一個 forms.py檔案
from django import forms
class UserForm(forms.Form):
username = forms.CharField(max_length=30)
password = forms.CharField(max_length=50)
views 檢視
from taobao.models import User
# taobao 是 app名
from .forms import UserForm
#註冊
@csrf_exempt
def register_view(req):
context = {}
if req.method == 'POST':
form = UserForm(req.POST)
if form.is_valid():
#獲得表單資料
username = form.cleaned_data['username']
password = form.cleaned_data['password']
#新增到資料庫(還可以加一些欄位的處理)
User.objects.create(username=username, password=password)
#新增到session
req.session['username'] = username
#重定向到首頁
return redirect('/')
else:
context = {'isLogin':False}
#將req 、頁面 、以及context{}(要傳入html檔案中的內容包含在字典裡)返回
return render(req,'register.html',context)
#登陸
@csrf_exempt
def login_view(req):
context = {}
if req.method == 'POST':
form = UserForm(req.POST)
if form.is_valid():
#獲取表單使用者密碼
username = form.cleaned_data['username']
password = form.cleaned_data['password']
#獲取的表單資料與資料庫進行比較
user = User.objects.filter(username = username,password = password)
if user:
#比較成功,跳轉index
req.session['username'] = username
return redirect('/')
else:
#比較失敗,還在login
context = {'isLogin': False,'pawd':False}
return render(req, 'login.html', context)
else:
context = {'isLogin': False,'pswd':True}
return render(req, 'login.html', context)
#登出
def logout_view(req):
#清理cookie裡儲存username
req.session.flush()
return redirect('/')
urls.py
直接上程式碼,name 中對應templates 中的 表單中的action
url(r'^login$', views.login_view,name='login'),
url(r'^logout', views.logout_view),
url(r'^register$', views.register_view,name='register'),