【django4】簡單註冊/登陸/登出功能
阿新 • • 發佈:2018-12-08
Python版本3.5,django版本1.10
1 新建專案
django-admin.py startproject website1
2 啟動伺服器,檢視是否正常
manage.py runserver
3 進入工程website1一級資料夾下新建app
python manage.py startapp account
4 將新建立的app加入工程中
修改 website1/website1/settings.py的INSTALL_APPS,將app名稱加入該元組中。
5 修改website1/urls.py檔案
from django.conf.urls import url, include from account import views as account_views urlpatterns = [ url(r'^index/', account_views.index), # 使用者主介面 url(r'^register/', account_views.register), # 註冊介面 url(r'^login/', account_views.login), # 登陸介面 url(r'^logout/', account_views.logout), # 登出介面 ]
6 修改views.py
from django.shortcuts import render from .models import UserModel from django.http import HttpResponseRedirect # Create your views here. def index(request): s = request.session.get('username', default=None) if s: return render(request, 'account/index.html', {'username':s}) # 跳轉至使用者主介面 else: return HttpResponseRedirect('/login') def register(request): if request.method == 'POST': # 使用者輸入賬戶密碼後提交表單 username = request.POST['username'] password = request.POST['password'] UserModel.objects.create(username=username, password=password) # 寫入資料庫 return render(request, 'account/regok.html') else: # 使用者直接訪問註冊頁面 return render(request, 'account/register.html') def login(request): if request.method == 'POST': # 使用者輸入賬戶密碼後提交表單 username = request.POST['username'] password = request.POST['password'] hasUser = UserModel.objects.filter(username=username, password=password) if hasUser: # 該使用者存在 request.session['username'] = username # 儲存使用者名稱在session中 return render(request, 'account/index.html', {'username':username}) # 跳轉至使用者主介面 else: return render(request, 'account/login.html') else: # 使用者直接訪問登陸頁面 return render(request, 'account/login.html') def logout(request): try: del request.session['username'] # 將使用者名稱從session中刪除 except KeyError: pass return render(request, 'account/logout.html')
7 編寫HTML
index.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>使用者中心</title>
</head>
<body>
歡迎您,{{username}}
<a href="/logout">退出</a>
</body>
</html>
login.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>登陸</title>
</head>
<body>
<h2>請登陸</h2>
<form method="post">
{% csrf_token %}
使用者:<input name="username" type="text" ><br/>
密碼:<input name="password" type="password" ><br/>
<input type="submit" value="登陸" >
</form>
</body>
</html>
register.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>註冊</title>
</head>
<body>
<form method="post">
{% csrf_token %}
使用者:<input name="username" type="text" ><br/>
密碼:<input name="password" type="password" ><br/>
<input type="submit" value="註冊" >
</form>
</body>
</html>
regok.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>註冊成功</title>
</head>
<body>
<h2>註冊成功!</h2>
點選<a href="/login">這裡</a>跳轉至登陸介面
</body>
</html>
logout.html
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>登出</title>
</head>
<body>
已登出!
</body>
</html>
8 models.py中的模型
from django.db import models
# Create your models here.
class UserModel(models.Model):
username = models.CharField(max_length=30)
password = models.CharField(max_length=30)
def __str__(self):
return self.username+", "+self.password
系統並沒有對註冊和登陸的輸入進行檢測,也沒有對重複註冊進行檢測,用session變數判斷使用者是否登陸。
其實,django中自帶了很多模組可以快速建立使用者註冊登入系統,相關模組如下;
Froms模組,代替表單中的輸入部分,對輸入進行檢查
User模組:代替上文中自己編寫的UserModel模型,具有更多欄位
auth模組:對使用者輸入進行驗證
login模組:代替上文中session變數部分,django自動判斷使用者是否登陸或登出
下一篇文章將介紹如何應用Django自帶模組構建使用者註冊登入系統。