电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:2日期:2024-09-25 13:04:30

簡介視圖

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

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

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

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

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

http請求:HttpRequest對象

http響應:HttpResponse對象

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

URLconf相關概述

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

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

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

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

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

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

for循環:

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

{{num}}

{%endfor%}<br>

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

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

{% endfor %}<br>

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

URL的反向解析(軟連接)

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

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

網頁模板語言的路徑的表示'{% url ’namesapce(分發路徑的名字):name(url的別名)’%}'

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

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

路由配置

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

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

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

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

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

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

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

視圖函數如下

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

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

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

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

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

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

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

與方式method='post'

在user的app中創建forms.py文件,填寫驗證條件

from django import formsfrom captcha.fields import CaptchaFieldfrom .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 UserRegisterFormdef 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數據 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’:’用戶已經存在’ }) 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 })

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

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

HttpReqeust對象

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

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

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

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

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

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

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

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

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

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

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

關于cookie的操作

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

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

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

標簽: Django
相關文章:
主站蜘蛛池模板: ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | ★塑料拖链__工程拖链__电缆拖链__钢制拖链 - 【上海闵彬】 | 儿童语言障碍训练-武汉优佳加感统文化发展有限公司 | 仿古瓦,仿古金属瓦,铝瓦,铜瓦,铝合金瓦-西安东申景观艺术工程有限公司 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 金库门,金库房,金库门厂家,金库门价格-河北特旺柜业有限公司 | 高温高压釜(氢化反应釜)百科 | 光栅尺_Magnescale探规_磁栅尺_笔式位移传感器_苏州德美达 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 上海阳光泵业制造有限公司 -【官方网站】| 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 成都软件开发_OA|ERP|CRM|管理系统定制开发_成都码邻蜀科技 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 手术示教系统-数字化手术室系统-林之硕医疗云智能视频平台 | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 常州企业采购平台_常州MRO采购公司_常州米孚机电设备有限公司 | 精密模具加工制造 - 富东懿 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 膏方加工_丸剂贴牌_膏滋代加工_湖北康瑞生物科技有限公司 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | 周口风机|周风风机|河南省周口通用风机厂| 网站建设,北京网站建设,北京网站建设公司,网站系统开发,北京网站制作公司,响应式网站,做网站公司,海淀做网站,朝阳做网站,昌平做网站,建站公司 | 篷房|仓储篷房|铝合金篷房|体育篷房|篷房厂家-华烨建筑科技官网 知名电动蝶阀,电动球阀,气动蝶阀,气动球阀生产厂家|价格透明-【固菲阀门官网】 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | MES系统-WMS系统-MES定制开发-制造执行MES解决方案-罗浮云计算 | 博医通医疗器械互联网供应链服务平台_博医通 |