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

Django視圖、傳參和forms驗證操作

 更新時間:2020年07月15日 14:35:21   作者:xiaoming0018  
這篇文章主要介紹了Django視圖、傳參和forms驗證操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

簡介視圖

主要內容:URLconf、HttpRequest對象、HttpResponse

1)視圖接受Web請求并且返回Web響應

2)視圖就是一個python函數(shù),被定義在views.py中

3)響應可以是一張網(wǎng)頁的HTML內容,一個重定向,一個404錯誤等等

4)在http請求中產(chǎn)生兩個核心對象,所在位置是,django.http:

http請求:HttpRequest對象

http響應:HttpResponse對象

這兩個對象是由django幫我構造的

URLconf相關概述

• 在settings.py文件中通過ROOT_URLCONF指定根級url的配置

• urlpatterns是一個url()實例的列表,我們把它稱為路由,它里面的每一個url()我們稱為路由配置

• 一個url()對象包括:正則表達式、視圖函數(shù)、可選參數(shù)、名稱name

• 請求的url被看做是一個普通的python字符串,進行匹配時不包括get或post請求的參數(shù)及域名。

字典Context={}上下文,在html頁面里有參數(shù)時要封裝到字典里作為render的第三個參數(shù)返回也可以直接寫字典存變量 context={'name':'lm'}

在html模板語言里:模板語言注釋{#顯示。。#} 在模板里顯示變量時用{{'name'}}用來顯示變量。(取消字典context的{})

for循環(huán):

{% for num in b %} b為列表

{{num}}

{%endfor%}<br>

{% for key,value in c.items %} #c為字典

{{key}}---->{{value}}

{% endfor %}<br>

{% if 條件 %} 滿足條件執(zhí)行語句{% else %}不滿足條件的語句 {% endif %}

URL的反向解析(軟連接)

如果在視圖、模板中使用硬編碼的鏈接,在urlconf發(fā)生改變時維護是一件非常麻煩的事情

解決:在做鏈接時,通過指向urlconf的名稱,也就是我們配置的namespace和name,動態(tài)生成鏈接地址

網(wǎng)頁模板語言的路徑的表示"{% url 'namesapce(分發(fā)路徑的名字):name(url的別名)'%}"

視圖:使用django.core.urlresolvers.reverse()函數(shù)

在模板語言中()[]是非法的用就報錯

路由配置

include這個方法,會把經(jīng)過主路由匹配成功后剩下的路徑,分發(fā)給我們app里面的子路由去處理,它并不是嚴格匹配,正則是沒有結束符$的,第一個參數(shù)代表分發(fā)給哪個路由配置文件去處理,第二個參數(shù)namespace代表反向解析,和url()當中name參數(shù)作用類似。

主路由配置:主路由就是我們項目設置文件夾當中和settings.py文件同級的那個urls.py文件里面的urlpatterns。把主路由當作調度分發(fā)路由的工具。 首頁放在主路由

子路由:分成不同的app模塊(app里配置urls.py文件)主路由判斷分子路由操作

urlpatterns 里的include為子路由分發(fā)。主路由的urlpatterns里的url(r'^news/',include('news.urls',namespace="news")) news為應用模塊

路徑傳參(位置和關鍵詞)模板語言在大括號里{% url 'news:news_date'2018 4 20 %}

未命名正則表達式組傳參(位置傳參):url(r'/(\d+)/(\d+)/(\d+)/$')

視圖函數(shù)如下

命名正則表達式組傳參(關鍵字傳參):視圖函數(shù)中的參數(shù)可以是亂序

url(r'/(?P<year>\d+)/(?P<mouth>\d+)/(?p<day>\d+)/$')

請求方式傳參:模版語言傳參:{% url 'news:news_date'%}?name=lm&a=5 與url路徑無關

所有form表單提交都需要forms驗證,再前端form表單需要制定提交路徑 action="{% url 'users:user_register' %}"

與方式method="post"

在user的app中創(chuàng)建forms.py文件,填寫驗證條件

from django import forms
from captcha.fields import CaptchaField
from .models import UserProfile,EmailVerify
 
class UserRegisterForm(forms.Form):
 email = forms.EmailField(required=True,error_messages={
  'required':'郵箱必須填寫'
 })
 password = forms.CharField(min_length=3,max_length=20,required=True,error_messages={
  'required': '密碼必須填寫',
  'min_length':'密碼最少得3個',
  'max_length': '密碼最多20個',
 })
 captcha = CaptchaField(error_messages={
  'invalid':'驗證碼錯誤'
 })

在views.py文件中

from .forms import UserRegisterForm
def user_register(request):
 if request.method == 'GET':
  user_register_form = UserRegisterForm()
  return render(request,'users/register.html',{
   'user_register_form':user_register_form
  })
 else:
  user_register_form = UserRegisterForm(request.POST)#進行驗證
  if user_register_form.is_valid():#判斷是否合法
   email = user_register_form.cleaned_data['email']#獲取request數(shù)據(jù)
   password = user_register_form.cleaned_data['password']
   user = UserProfile.objects.filter(Q(email=email)|Q(username=email))
   if user:
    return render(request,'users/register.html',{
     'msg':'用戶已經(jīng)存在'
    })
   else:
    a = UserProfile()
    a.username = email
    a.email = email
    a.set_password(password)#加密密碼
    a.si_active=False#設置密碼未激活,需要郵箱驗證激活
    a.save()
  else:
   return render(request,'users/register.html',{
    'user_register_form':user_register_form
   })

獲得參數(shù)用:zhaoliying=request.GET.get('name',None) GET類字典(可以一鍵多值用getlist取值) None沒有參數(shù)默認返回None。前端傳到后端的數(shù)據(jù)都為字符串

CSRF跨站偽造攻擊錯誤。在獲取POST方式傳遞的參數(shù)時,要取消錯誤在form表單里加入 {% csrf_token %}

HttpReqeust對象

下面除非特別說明,屬性都是只讀的,都是字符串

1)path:一個字符串,表示請求的頁面的完整路徑,不包含域名和請求參數(shù)

2)method:一個字符串,表示請求使用的HTTP方法,常用值包括:'GET'、'POST'

3)encoding:一個字符串,表示提交的數(shù)據(jù)的編碼方式

A)如果為None則表示使用瀏覽器的默認設置,一般為utf-8

B)這個屬性是可寫的,可以通過修改它來修改訪問表單數(shù)據(jù)使用的編碼,接下來對屬性的任何訪問將使用新的encoding值

4)GET:一個類似于字典QueryDict的對象,包含get請求方式的所有參數(shù),與url請求地址中的參數(shù)對應,位于?后面參數(shù)的格式是鍵值對,如key1=value1。多個參數(shù)之間,使用&連接。獲得參數(shù)用:data = request.GET.get(‘鍵',默認)獲取

5)POST:一個類似于字典QueryDict的對象,包含post請求方式的所有參數(shù)??丶衝ame屬性,則name屬性的值為鍵,value屬性的值為鍵,構成鍵值對提交。獲得參數(shù)用:data = request.POST.get(‘鍵',默認)獲取

6)FILES:一個類似于字典的對象,包含所有的上傳文件

7)COOKIES:一個標準的Python字典,包含所有的cookie,鍵和值都為字符串

8)session:一個既可讀又可寫的類似于字典的對象,表示當前的會話,只有當Django 啟用會話的支持時才可用,詳細內容見“狀態(tài)保持”與python字典不同,QueryDict類型的對象用來處理同一個鍵帶有多個值的情況。

關于cookie的操作

1)Cookie,有時也用其復數(shù)形式 Cookies,指某些網(wǎng)站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。定義于 RFC2109 和 2965 中的都已廢棄,最新取代的規(guī)范是 RFC6265 [1] 。(可以叫做瀏覽器緩存)

2)cookie是服務器設置存儲在瀏覽器的一段文本信息,例如用戶登錄的時候不用輸入密碼了。

以上這篇Django視圖、傳參和forms驗證操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 解決django框架model中外鍵不落實到數(shù)據(jù)庫問題

    解決django框架model中外鍵不落實到數(shù)據(jù)庫問題

    這篇文章主要介紹了解決django框架model中外鍵不落實到數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • python中的tkinter庫彈窗messagebox詳解

    python中的tkinter庫彈窗messagebox詳解

    這篇文章主要介紹了python中的tkinter庫彈窗messagebox,包括消息提示框、消息警告框、錯誤消息框,通過代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • python 裝飾器詳解與應用范例

    python 裝飾器詳解與應用范例

    裝飾器是 Python 的一個重要部分。簡單地說:他們是修改其他函數(shù)的功能的函數(shù)。他們有助于讓我們的代碼更簡短,也更Pythonic。大多數(shù)初學者不知道在哪兒使用它們,所以我將要分享下,哪些區(qū)域里裝飾器可以讓你的代碼更簡潔。 首先,讓我們討論下如何寫你自己的裝飾器
    2021-11-11
  • Python中循環(huán)引用(import)失敗的解決方法

    Python中循環(huán)引用(import)失敗的解決方法

    在python中常常會遇到循環(huán)import即circular import的問題,下面這篇文章主要給大家介紹了關于Python中循環(huán)引用(import)失敗的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2018-04-04
  • Python中的條件判斷語句基礎學習教程

    Python中的條件判斷語句基礎學習教程

    這篇文章主要介紹了Python中的條件判斷語句基礎學習教程,文中使用的是Python2.x版本但條件語句部分的使用規(guī)則未在3.x中改變,需要的朋友可以參考下
    2016-02-02
  • Python守護進程(daemon)代碼實例

    Python守護進程(daemon)代碼實例

    這篇文章主要介紹了Python守護進程(daemon)代碼實例,本文直接給出實現(xiàn)代碼,代碼中包含詳細注釋,需要的朋友可以參考下
    2015-03-03
  • python 單線程和異步協(xié)程工作方式解析

    python 單線程和異步協(xié)程工作方式解析

    這篇文章主要介紹了python 單線程和異步協(xié)程工作方式解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 使用Python的PIL庫給圖像進行過濾

    使用Python的PIL庫給圖像進行過濾

    PIL是一個用于圖像處理的Python庫,它提供了各種功能,包括加載、保存、編輯和處理圖像,你可以使用PIL庫進行圖像縮放、裁剪、旋轉、濾鏡應用等操作,本文將介紹如何使用Python的PIL庫給圖像進行過濾,需要的朋友可以參考下
    2023-08-08
  • Python實現(xiàn)獲取某天是某個月中的第幾周

    Python實現(xiàn)獲取某天是某個月中的第幾周

    這篇文章主要介紹了Python實現(xiàn)獲取某天是某個月中的第幾周,本文代碼實現(xiàn)獲取指定的某天是某個月中的第幾周、周一作為一周的開始,需要的朋友可以參考下
    2015-02-02
  • Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例

    Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例

    今天小編就為大家分享一篇Python Pandas實現(xiàn)數(shù)據(jù)分組求平均值并填充nan的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07

最新評論

乐至县| 长岛县| 嘉善县| 色达县| 襄汾县| 喀喇| 奉化市| 遂川县| 晋城| 澎湖县| 清河县| 昌黎县| 日土县| 麻江县| 汝城县| 丰顺县| 唐山市| 青冈县| 荥经县| 青铜峡市| 筠连县| 巩义市| 昌乐县| 达孜县| 那曲县| 莎车县| 墨玉县| 遵化市| 陵水| 望江县| 琼海市| 慈溪市| 宁国市| 六安市| 黑山县| 英吉沙县| 四子王旗| 长顺县| 兰考县| 弋阳县| 宜兰市|