1. 程式人生 > >Django views.py 檢視函式

Django views.py 檢視函式

  • 引數: request 跟請求相關的內容
    request.method 判斷請求方式 8種
    GET : 獲取一個頁面

      POST:       提交資料
    
      PUT :       上傳
    
      HEAD:           不用上傳就獲取資料
    
      DELETE:         刪除 Request-URL 標識的
    
      TRACE:          回顯伺服器收到的請求
    
      OPTIONS:    測試伺服器功能是否正常
    
      CONNECT:    將連結改為管道方式
    
    常用 GET  POST 請求
    
      request.POST      form表單提交POST請求傳遞的資料    獲得一個{}   取值方式 []  get()
    
      request.GET         URL地址上的引數   獲得一個{}   取值方式 []   get()
    request 相關方法
    request.method -->> 判斷請求方式
    request.POST -->> form表單提交POST請求傳遞的資料 獲得一個{} 取值方式 [] get()
    request.GET -->> URL地址上的引數 獲得一個{} 取值方式 [] get()
    request.path_info -->> 獲取當前請求的路徑 不包含引數
    request.get_full_path() -->> 獲取當前請求的路徑 含引數
    request.get_host() -->> 獲取請求主機的 ip地址及埠號
    request.body -->> 請求體 byte型別 request.POST就是從 body 中提取的
    request.COOKIES -->> 獲取所有的 cookies 字典形式
    request.META -->> 獲取所有的HTTP頭部資訊 是一個字典
    request.session -->> 獲取一個可讀又可寫 的 類似字典的 物件
    request.is_secure() -->> 判斷請求是否安全
    request.is_ajax() -->> 判斷是否是 ajax 請求
    request.get_signet_cookies(key,salt='鹽') -->> 獲取假眼的 cookies 字典形式
    檢視寫法
    • FBV (function based view ) 寫url和函式的對應關係
      from django.shortcuts import render, redirect, HttpResponse
      def login(request):
      err = ''
      if request.method == 'POST':
      name = request.POST.get('name')
      pwd = request.POST.get('pwd')
      if name == 'root' and 'pwd' == '123':
      return HttpResponse('登入成功')
      err = '賬號或密碼錯誤'
      return render(request,'login.html',{'err':err})
    • CBV (class based view) 寫url和類的對應關係
      from django.views import View
      class Index(View):
      # GET 請求
      def get(self, request):
      return render(request,'index.html')
      # POST 請求
      def post(self, request):

              data = request.POST.get('data')
              print(data)
              return self.get(request)

    返回值
    匯入三件套
    from django.shortcuts import render, redirect, HttpResponse, reverse

    redirect(reverse('/index/')) 重定向  + 反向解析
    
    def login(request):
      return HttpReponse('字串')        返回一些字串  
    
    def regist(request):    
      return  render(request,'模板的檔名',{"data":"name"})      返回一個完整的HTML頁面
    
    def index(request):
      return redirect('要跳轉的地址')       重定向    Location : 地址