日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

DAY74-Django框架(五)

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DAY74-Django框架(五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、虛擬環境

對于一些需要跑在不同版本的模塊下的項目,可以跑在虛擬環境中運行

創建虛擬環境的兩種方法

  • pychanrm**創建

    1.創建項目時選擇使用虛擬環境

    ?

    2.在已創建的項目中設置setting

    ?

注:純凈環境就是沒有任何模塊

  • 命令行創建

    1.下載virtualenv軟件

pip3 install virtualenv

? 2.創建虛擬環境

#創建純凈環境
virtualenv  env_django
#創建環境,繼承了原安裝的模塊
virtualenv  --system-site-packages env_django

? 3.激活虛擬環境

#通過命令行,進入虛擬環境的文件夾下的Script文件,輸入
active

? 4.退出虛擬環境

deactivate

二、Django2.0與Django1.0的路由區別

唯一的區別就是1.0版本路由使用的是URL(),而2.0的是re_path和path

re_path

與url的用法一模一樣,并且分組出來的數據也是字符串類型

re_path('正則表達式',視圖函數,參數,別名)

path

這是2.0新增的,傳過來的路徑是準確路徑,而不是正則表達式

path('準確路徑 | 轉化器', 視圖函數,參數,別名),
#轉化器由<>包裹,包含<轉化器類型:變量>,若沒有轉化器,將匹配任何字符串
path('test/<path:year>', views.re_test),#轉化器類型
#str,匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式
#int,匹配正整數,包含0。
#slug,匹配字母、數字以及橫杠、下劃線組成的字符串。
#uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
#path,匹配任何非空字符串,包含了路徑分隔符(/)

自定義轉換器

對于一些復雜或者復用的需要,可以定義自己的轉化器。轉化器是一個類或接口,它的要求有三點:

  • regex 類屬性,字符串類型

  • to_python(self, value) 方法,value是由類屬性 regex 所匹配到的字符串,返回具體的Python變量值,以供Django傳遞到對應的視圖函數中。
  • to_url(self, value) 方法,和 to_python 相反,value是一個具體的Python變量值,返回其字符串,通常用于url反向引用。

#編寫自定義轉化器
class MyCon:# 寫一個正則表達式regex = '[0-9]{4}'# 匹配出來的數據,會傳到這里,retrun回去的,會被視圖函數接收def to_python(self, value):return int(value)# 反向解析用的def to_url(self, value):return '%04d' % value#注冊自定義轉化器
from django.urls import register_converter
register_converter(MyCon,'yyy')#使用自定義轉化器
path('test/<yyy:year>', views.re_test,name='test'),

三、視圖層

HttpRequest對象

django將請求報文中的請求行、首部信息、內容主體封裝成 HttpRequest 類中的屬性。

#常用屬性
# 前臺Post傳過來的數據,包裝到POST字典中
request.POST# 前臺瀏覽器窗口里攜帶的數據,包裝到GET字典中
request.GET# 前臺請求的方式
request.method# post提交的數據,body體的內容,前臺會封裝成:name=lqz&age=18&sex=1。適合處理非表單數據
request.body# 取出請求的路徑,取不到數據部分
request.path# 取出請求的路徑,能取到數據部分
request.get_full_path()#取出表單請求方法為POST,并編寫方式是enctype="multipart/form-data"的所有上傳文件信息
request.FILES#包含所有的HTTP 首部信息,以字典的形式
request.META
#注意:request.META['HTTP_REFERER']  表示上一個跳轉頁面

HttpResponse對象

響應對象主要有三種形式:

  • HttpResponse():括號內直接跟一個具體的字符串作為響應體返回
  • render():將一個模板頁面中的模板語法進行渲染,最終渲染成一個html頁面作為響應體。
  • redirect():重定向

render()

#render(請求對象,模板名,模板需要的參數(字典形式))
render(request, template_name[, context])#要知道render和redircet都是HttpResponse的對象
#render的內部原理
from django.template import Template,Context
#調用Template,傳入html標簽
temp=Template('<h1>{{ user }}</h1>')
#調用Context,傳入數據標簽
con=Context({'user':'lqz'})
#二者合一
ret=temp.render(con)
#最后用HttpResponse傳出去
return HttpResponse(ret)

JsonResponse對象

向前端返回一個json格式字符串

from django.http import JsonResponse
def test(request):dic={'name':'lqz','age':18}return JsonResponse(dic)ll = ['name', 'age']# 報錯,默認不支持列表形式return JsonResponse(ll)# 支持列表形式return JsonResponse(ll,safe=False)#JsonResponse方法內部其實是調用了json模塊,在內部進行了轉換
import json
dic={'name':'lqz','age':18}
# 把字典轉換成json格式,返回到前臺
return HttpResponse(json.dumps(dic))

五、CBV與FBV

CBV:基于類的視圖(Class base view)

#路由層:
url(r'^test/', views.Test.as_view()),
#視圖層
from django.views import View
class Test(View):def get(self, request):#一定要傳request對象return HttpResponse('get-test')def post(self, request):return HttpResponse('post-test')

FBV:基于函數的視圖(Function base view)

七、簡單文件上傳

前端:#enctype屬性#application/x-www-form-urlencoded:默認,POST會拿到控件傳過來的值,除了文件,只會獲得文件的名字;FILES也沒獲得文件#multipart/form-data:POST拿不到文件信息,會將文件信息與數據存放到FILES中;如果沒上傳文件就提交,POST會得到文件的字典形式,value為空#text/plain:不會拿到表單信息<form action="" method="post" enctype="multipart/form-data"><input type="file" name="myfile"><input type="text" name="password"><input type="submit" value="提交"></form>
后臺:def fileupload(request):if request.method=='GET':return render(request,'fileupload.html')if request.method=='POST':# 從字典里根據名字,把文件取出來myfile=request.FILES.get('myfile')# 文件名字name=myfile.name# 打開文件,把上傳過來的文件存到本地with open(name,'wb') as f:# for line in myfile.chunks():for line in myfile:f.write(line)return HttpResponse('ok')

轉載于:https://www.cnblogs.com/xvchengqi/p/9931204.html

總結

以上是生活随笔為你收集整理的DAY74-Django框架(五)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。