真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

五、自定義轉(zhuǎn)化器,視圖層之httprequest對像、HttpResponse、JsonRepons

一、虛擬環(huán)境

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比同德網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式同德網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋同德地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

1 用pychanrm創(chuàng)建--->files-->newproject--->選擇虛擬環(huán)境
2 settings-->project創(chuàng)建
3 用命令行創(chuàng)建,詳見https://www.cnblogs.com/liuqingzheng/p/9508851.html

二、django 2.0和django 1.0 路由層區(qū)別

(*****url,re_path分組分出來的數(shù)據(jù),是字符串)
-re_path:跟1.0的url用法相同
-path:傳的路徑,是準確路徑
-re_path ---->等于原來的url (re_path模塊)
5個轉(zhuǎn)換器-->path('test/', views.re_test),
	str,匹配除了路徑分隔符(/)之外的非空字符串,這是默認的形式
	int,匹配正整數(shù),包含0。
	slug,匹配字母、數(shù)字以及橫杠、下劃線組成的字符串。
	uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
	path,匹配任何非空字符串,包含了路徑分隔符(/)(不能用?)

-自定義轉(zhuǎn)換器(django2.0)

print('%010d'%12)
# 結(jié)果 :0000000012 (共10位,不足的用0補齊)

urls.py

# 1、定義一個類:
# 自定義轉(zhuǎn)換器 
class MyCon:
    # 寫一個正則表達式,名字必須命名為regex
    regex='[0-9]{4}'

    # 匹配出來的數(shù)據(jù),會傳到這里,retrun回去的,會被視圖函數(shù)接收
    def to_python(self,value):
        return int(value)   # ×××
        # return value   # 字符串類型

    # 反向解析用的
    def to_url(self,value):
        return "%04d" %value
# 2 導(dǎo)入模塊        
from django.urls import register_converter        
# 轉(zhuǎn)換器 register_converter
register_converter(MyCon,'yyy')
# 3 寫入表達式
urlpatterns = [
path('test/',views.re_test),
]

views.py

def re_test(request,year):
    return HttpResponse('ok')

訪問:http://127.0.0.1:8000/test/2018

返回:ok 


urls.py

from django.urls import path,re_path,register_converter
from app01 import views
class MyCon:
    regex='[0-9]{4}'
    def to_python(self,value):
        return value
    def to_url(self,value):
        return "%04d" %value
register_converter(MyCon,'yyy') 
urlpatterns = [   
    path('test/',views.re_test,name='test'),
]

views.py

from django.shortcuts import render,HttpResponse,reverse
def re_test(request,year):
    url=reverse('test',args=(9,))
    print(url)
    return HttpResponse('ok')

返回:/test/0009

三、APPEND_SLASH

settings.py

# 默認為True ,設(shè)置為False 后 http://127.0.0.1:8000/test 不會為test補全后面的'/',打開網(wǎng)頁后會成為404(若沒有這個頁面的話)
APPEND_SLASH=False

四、視圖層之http request對像

# request屬性
#  https://www.cnblogs.com/liuqingzheng/articles/9509801.html
# def test(request):
#     print(type(request))
    # 前臺Post傳過來的數(shù)據(jù),包裝到POST字典中
    # request.POST
    # 前臺瀏覽器窗口里攜帶的數(shù)據(jù),包裝到GET字典中
    # request.GET
    # 前臺請求的方式
    # request.method
    # post提交的數(shù)據(jù),都存放在body體的內(nèi)容
    # request.body
    # 取出請求的路徑,取不到數(shù)據(jù)部分
    # print(request.path)
    # 取出請求的路徑,能取到數(shù)據(jù)部分
    # print(request.get_full_path())
    #  請求頭里的數(shù)據(jù)(例如:請求地址,名字,以及從哪個地址訪問過來的)
    # print(request.META)
    # referer :是從哪個鏈接過來的
    #  post提交數(shù)據(jù)格式,放到body體中
    # name=lqz&age=18&sex=1
    # return HttpResponse("ok")

小點補充:調(diào)試斷點:

五、自定義轉(zhuǎn)化器,視圖層之httprequest對像、HttpResponse、JsonRepons

五、視圖層之HttpResponse

三件套:render,HttpResponse,redirect

# render(返回模板,html文件)

# HttpResponse:返回字符串

# redirect: 重定向

HttpResponse 內(nèi)部原理

views.py

from django.shortcuts import render,HttpResponse
from django.template import Template,Context
def index(request):
    if request.method=="GET":
        temp = Template('

{{ user }}

')         con = Context({'user': 's_jun'})         ret = temp.render(con)         print(ret)         return HttpResponse(ret)

urls.py

url(r'^index/', views.index)

六、視圖層之JsonResponse對象

# 返回給前臺的一個json格式,可以讓js代碼拿到,實現(xiàn)dom操作,這種叫做前后端分離。

# 使用 JsonResponse 返回給前臺一個json格式的字典,只支持字典,另外一種方式可以支持列表

views.py

from django.http import JsonResponse
def index(request):
    import json
    dic={'name':'s_jun','age':20}
    # return HttpResponse(json.dumps(dic))  # 原理
    return JsonResponse(dic)

支持列表的方式:views.py

def index(request):
    li = ['name','age']
    return JsonResponse(li,safe=False)

訪問:http://127.0.0.1:8000/index/

七、fbv與cbv

-基于類的視圖

urls.py

url(r'^test/', views.Test.as_view()), # 自定義Test類,調(diào)用as_view的方法,叫做:綁定給類的方法

views.py

from django.views import View
class Test(View):
    def get(self,request):   # 一定要傳request對象
        return  HttpResponse('This is get-test')
    def post(self,request):
        return  HttpResponse('This is post-test')

-基于函數(shù)的視圖

八、文件上傳

urls.py

url('^upload/', views.upload)

# 需要在根項目下創(chuàng)建一個img的目錄

views.py

def upload(request):
    if request.method=='GET':
        return render(request,'upload.html')
    if request.method=="POST":
        myfile=request.FILES.get('yyy')
        img="img/"+myfile.name
        # 打開文件,把上傳過來的文件存到本地
        with open(img,'wb') as f :
            for line in myfile.chunks():
                f.write(line)
        return HttpResponse('post ok')

upload.html




    
    upload



    
   

 密碼:

    

補充:*****編碼方式multipart/form-data或者:application/x-www-form-urlencoded傳的數(shù)據(jù),都可以從POST中取出來


新聞名稱:五、自定義轉(zhuǎn)化器,視圖層之httprequest對像、HttpResponse、JsonRepons
當前網(wǎng)址:http://weahome.cn/article/ghscei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部