最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年04月22日 11:06:48   作者:JohnaXu  
這篇文章主要介紹了Django小白教程之Django用戶注冊與登錄的相關(guān)資料,需要的朋友可以參考下

 Django 是由 Python 開發(fā)的一個免費的開源網(wǎng)站框架,可以用于快速搭建高性能,優(yōu)雅的網(wǎng)站!

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

首先創(chuàng)建項目,到項目所在目錄:django-admin startproject demo0414_userauth

進入項目:cd demo0414_userauth

創(chuàng)建相應的app:django-admin startapp account

整個項目的結(jié)構(gòu)圖如圖所示

├── 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 

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

這里寫圖片描述 

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

這里寫圖片描述 

然后在model中創(chuàng)建相應的數(shù)據(jù)庫:

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

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

#coding=utf-8
from django.shortcuts import render,render_to_response
from django import forms
from django.http import HttpResponse,HttpResponseRedirect
from django.template import RequestContext
from django.contrib import auth
from models import User

import pdb

def 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']
   #將表單寫入數(shù)據(jù)庫
    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>

更新數(shù)據(jù)庫:

這里寫圖片描述 

運行服務器:

這里寫圖片描述 

注冊頁面:

這里寫圖片描述 

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

登錄頁面:

這里寫圖片描述 

點擊OK就能進入到success頁面

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

相關(guān)文章

  • Python手機號碼歸屬地查詢代碼

    Python手機號碼歸屬地查詢代碼

    這篇文章主要介紹了Python手機號碼歸屬地查詢代碼的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Python算法練習之二分查找算法的實現(xiàn)

    Python算法練習之二分查找算法的實現(xiàn)

    二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。本文將介紹python如何實現(xiàn)二分查找算法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2022-06-06
  • Python3.X 線程中信號量的使用方法示例

    Python3.X 線程中信號量的使用方法示例

    信號量semaphore 是一個變量,控制著對公共資源或者臨界區(qū)的訪問。信號量維護著一個計數(shù)器,指定可同時訪問資源或者進入臨界區(qū)的線程數(shù)。下面這篇文章主要給大家介紹了關(guān)于Python3.X 線程中信號量的使用方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • Python 中使用正則表達式轉(zhuǎn)義

    Python 中使用正則表達式轉(zhuǎn)義

    這篇文章主要介紹了Python 正則表達式轉(zhuǎn)義,在 Python 中,正則表達式轉(zhuǎn)義sub()方法用于替換字符串,替換后的字符串由 re 模塊中的 Python 內(nèi)置方法返回,需要的朋友可以參考下
    2023-06-06
  • Python實現(xiàn)的在特定目錄下導入模塊功能分析

    Python實現(xiàn)的在特定目錄下導入模塊功能分析

    這篇文章主要介紹了Python實現(xiàn)的在特定目錄下導入模塊功能,結(jié)合實例形式分析了Python基于系統(tǒng)函數(shù)及import語句實現(xiàn)模塊導入的相關(guān)操作技巧,需要的朋友可以參考下
    2019-02-02
  • 用python 實現(xiàn)在不確定行數(shù)情況下多行輸入方法

    用python 實現(xiàn)在不確定行數(shù)情況下多行輸入方法

    今天小編就為大家分享一篇用python 實現(xiàn)在不確定行數(shù)情況下多行輸入方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Pycharm無法顯示動態(tài)圖片的解決方法

    Pycharm無法顯示動態(tài)圖片的解決方法

    今天小編就為大家分享一篇Pycharm無法顯示動態(tài)圖片的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python實現(xiàn)從PPT中導出高分辨率圖片

    Python實現(xiàn)從PPT中導出高分辨率圖片

    這篇文章主要為大家分享了一個實用腳本——如何利用Python實現(xiàn)從PPT中導出高分辨率(高 dpi)的圖片,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-05-05
  • Python中with及contextlib的用法詳解

    Python中with及contextlib的用法詳解

    這篇文章主要介紹了Python中with及contextlib的用法,結(jié)合實例形式較為詳細的分析了with及contextlib的功能、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-06-06
  • python self,cls,decorator的理解

    python self,cls,decorator的理解

    在python里面,self, cls 不是關(guān)鍵字,完全可以使用自己寫的任意變量代替實現(xiàn)一樣的效果
    2009-07-07

最新評論

松江区| 囊谦县| 股票| 安阳市| 青川县| 遂宁市| 上饶市| 泌阳县| 清新县| 东安县| 孝感市| 安义县| 根河市| 寻甸| 石柱| 大邑县| 灵山县| 武冈市| 龙江县| 清水河县| 普兰店市| 淳安县| 苗栗市| 合江县| 班玛县| 汝阳县| 临江市| 嘉黎县| 沾化县| 乌鲁木齐市| 台州市| 肃北| 栾川县| 巴东县| 宝坻区| 林周县| 晋州市| 南宫市| 离岛区| 静宁县| 文成县|