Django之視圖函數(views.py)


視圖函數(views.py)簡稱視圖,它接受web請求並且返回web響應。其中每個視圖都要返回一個HttpResponse對象。

 

http請求中會產生兩個核心對象:

  http請求:HttpRequest對象,由Django自己創建

  http響應:HttpResponse對象,由開發自己創建

所在位置:django.http

 

HttpRequest對象的屬性和方法:

  path:請求頁面的全路徑,不包括域名。

    def date(req,year):
      print(req.path)
      return HttpResponse(year)

    >>> /index/time/1995/12
  

  method:請求中使用的HTTP方法的字符串表示。全大寫表示。

    def time(req):
      if req.method == "POST":
        return HttpResponse("POST OK!")
      elif req.method == "GET":
        return render(req,"Adair.html")

  GET:此方法中包含HTTP GET請求中的所有參數。

   def time(req):
    if req.method == "POST":
      return HttpResponse("POST OK!")
    elif req.method == "GET":
      print(req.GET)
      return render(req,"Adair.html")

    >>> <QueryDict: {'a': ['b']}>     返回的數據為字典形式,可以通過key獲取對應的值(req.GET.getlist('KEY')

  POST:此方法中包含HTTP POST請求中的所有參數。

   def time(req):
    if req.method == "POST":
      print(req.POST)
      return HttpResponse("POST OK!")
    elif req.method == "GET":
      # print(req.GET)
      return render(req,"Adair.html")

  >>> form表單的提交為post的請求,所有也有可能接收到空的數據,需注意判斷(req.POST.getlist('KEY'))

  

  COOKIES:包含所有cookies的標准python對象;key和value都是字符串。


  FILES:包含所有上傳文件的類字典對象;FILES中的每個key都是<input type="file" name="" />標簽中name屬性的值,FILES中的每一個value同時也是一個標准的python字典對象,包含三個keys:

      filename:上傳文件名,用字符串表示

      content_type:上傳文件的content type

      content:上傳文件的原始內容

 

  user:是一個django.contrib.auth.models.User對象,代表當前登錄的用戶。如果訪問用戶當前沒有登錄,user將被初始化為django.contrib.auth.models.AnonymousUser的實例。你可以通過user的is_authenticated()方法來辨別用戶是否登錄;if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware時該屬性才可用

 

  session:唯一可讀寫的屬性,代表當前會話的字典對象;自己有激活Django中的session支持時該屬性才可用 

  

  get_full_path() :比如訪問:http://127.0.0.1:8000/index/time/1995/12/?a=b   ,那req.get_full_path()得到的結果就是:/index/time/1995/12/?a=b;  req.path得到的結果是:/index/time/1995/12

 

  注:request.POST.get(‘key’) 、 request.GET.get('key', '')。如果傳遞過來的數值不為空,那么這兩種方法都沒有錯誤,可以得到相同的結果。但是如果傳遞過來的數值為空,那么request.POST[‘username’]則會提示Keyerror錯誤,而request.POST.get(‘username’)則不會報錯,而是返回一個None。

 

HttpResponse對象的屬性和方法:

  每個view請求處理方法必須返回一個HttpResponse對象(HttpResponse類在Django.http.HttpResponse)

  HttpResponse對象上擴展的常用方法:

    頁面渲染:render() 推薦   

         render_to_response()

    頁面跳轉:redirect("路徑")

    locals()  :可以直接將函數中所有的變量傳給模板  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM