国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Django小白教程之Django用戶注冊與登錄

2019-11-25 16:49:51
字體:
來源:轉載
供稿:網友

 Django 是由 Python 開發的一個免費的開源網站框架,可以用于快速搭建高性能,優雅的網站!

學習django學得超級吃力,最近弄個最簡單的用戶登錄與注冊界面都是那么難,目前算是基本實現了,雖然功能特別特別簡單但是做一個記錄,以后學習深入了再來補充:

首先創建項目,到項目所在目錄:django-admin startproject demo0414_userauth

進入項目:cd demo0414_userauth

創建相應的app:django-admin startapp account

整個項目的結構圖如圖所示

├── account
│ ├── admin.py
│ ├── admin.pyc
│ ├── apps.py
│ ├── init.py
│ ├── init.pyc
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0001_initial.pyc
│ │ ├── init.py
│ │ └── init.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── tests.py
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ └── views.pyc
├── demo0414_userauth
│ ├── init.py
│ ├── init.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── manage.py
└── templates
├── register.html
├── success.html
└── userlogin.html

4 directories, 29 files

然后在setting文件的installed_app中添加app account;

添加app 

創建一個templates文件夾,可以放在項目的根目錄下也可以放在app的目錄下。一般情況下提倡放在app的目錄下。如果放下項目的根目錄下需要在setting文件中TEMPLATES中設置'DIRS': [os.path.join(BASE_DIR,'templates')],否則不能使用模板。

這里寫圖片描述 

另外因為這個項目存在頁面跳轉的問題,為了安全防止csrf攻擊,一把模板中都有了相關的設置。目前我還不會用這個東西,據說在form表單中添加標簽{% csrf_token %}就可以實現了,但是我沒有成功。所以先不考慮這個問題,把seeting中的這個中間件'django.middleware.csrf.CsrfViewMiddleware',注釋掉

這里寫圖片描述 

然后在model中創建相應的數據庫:

class User(models.Model): username = models.CharField(max_length=50) password = models.CharField(max_length=50) email = models.EmailField()

view中添加相應的程序。Pdb當時用于斷點調試,我很喜歡,超級喜歡。如果你不敢興趣,直接注釋即可。

#coding=utf-8from django.shortcuts import render,render_to_responsefrom django import formsfrom django.http import HttpResponse,HttpResponseRedirectfrom django.template import RequestContextfrom django.contrib import authfrom models import Userimport pdbdef login(request):  if request.method == "POST":  uf = UserFormLogin(request.POST)  if uf.is_valid():   #獲取表單信息   username = uf.cleaned_data['username']   password = uf.cleaned_data['password']      userResult = User.objects.filter(username=username,password=password)   #pdb.set_trace()   if (len(userResult)>0):    return render_to_response('success.html',{'operation':"登錄"})   else:    return HttpResponse("該用戶不存在") else:  uf = UserFormLogin()return render_to_response("userlogin.html",{'uf':uf})def register(request): curtime=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()); if request.method == "POST":  uf = UserForm(request.POST)  if uf.is_valid():   #獲取表單信息   username = uf.cleaned_data['username']   #pdb.set_trace()   #try:   filterResult = User.objects.filter(username = username)   if len(filterResult)>0:    return render_to_response('register.html',{"errors":"用戶名已存在"})   else:    password1 = uf.cleaned_data['password1']    password2 = uf.cleaned_data['password2']    errors = []    if (password2 != password1):     errors.append("兩次輸入的密碼不一致!")     return render_to_response('register.html',{'errors':errors})     #return HttpResponse('兩次輸入的密碼不一致!,請重新輸入密碼')    password = password2    email = uf.cleaned_data['email']   #將表單寫入數據庫    user = User.objects.create(username=username,password=password1)    #user = User(username=username,password=password,email=email)    user.save()    pdb.set_trace()   #返回注冊成功頁面    return render_to_response('success.html',{'username':username,'operation':"注冊"}) else:  uf = UserForm()return render_to_response('register.html',{'uf':uf})class UserForm(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='電子郵件')class UserFormLogin(forms.Form): username = forms.CharField(label='用戶名',max_length=100) password = forms.CharField(label='密碼',widget=forms.PasswordInput())

Tempaltes文件夾下總共有3個頁面:

Register.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>用戶注冊</title></head> <style type="text/css"> body{color:#efd;background:#453;padding:0 5em;margin:0} h1{padding:2em 1em;background:#675} h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em} p{margin:1em 0} </style><body><h1>注冊頁面:</h1><form method = 'post' enctype="multipart/form-data">{{uf.as_p}}{{errors}}</br><input type="submit" value = "ok" /></form></body></html>

Userlogin.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>用戶注冊</title></head> <style type="text/css"> body{color:#efd;background:#453;padding:0 5em;margin:0} h1{padding:2em 1em;background:#675} h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em} p{margin:1em 0} </style><body><h1>登錄頁面:</h1><form method = 'post' enctype="multipart/form-data">{{uf.as_p}}<input type="submit" value = "ok" /></form></body></html>

Success.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></title></head><body><form method = 'post'> <h1>恭喜,{{operation}}成功!</h1></form></body></html>

更新數據庫:

這里寫圖片描述 

運行服務器:

這里寫圖片描述 

注冊頁面:

這里寫圖片描述 

如果注冊的用戶沒有注冊過,則能注冊成功點擊OK進入success界面

登錄頁面:

這里寫圖片描述 

點擊OK就能進入到success頁面

關于Django用戶注冊與登錄教程就給大家介紹完了,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣化县| 龙海市| 迭部县| 波密县| 莱芜市| 弋阳县| 睢宁县| 陈巴尔虎旗| 柳林县| 葫芦岛市| 库伦旗| 宜都市| 伊宁县| 资溪县| 昌黎县| 朝阳市| 北宁市| 宝清县| 岳普湖县| 万山特区| 石渠县| 信阳市| 关岭| 泰来县| 武定县| 莆田市| 淮南市| 荣昌县| 巢湖市| 成都市| 新昌县| 延寿县| 江阴市| 宁海县| 桃园市| 噶尔县| 房产| 昆山市| 南靖县| 昆山市| 保定市|