django views視圖函數


Django views.py視圖文件

一. 創建views.py文件在工程文件夾根目錄創建views.py視圖文件,其實任意文件名都可以,使用views是為了遵循傳統。

注:所有的views函數都需要以request對象作為第一個參數request代表客戶端瀏覽器向服務器請求的一個信息字符串,views中的函數需要接收這個字符串才行對他進行處理。

 

.HttpResponse函數:

views.py里面,我們可以使用HttpResponse直接給頁面返回一個字符串。

調用HttpResponse直接給頁面返回一個字符串。

 

from django.http import HttpResponse

def hello(request):    

return HttpResponse("Hello World!")

 

三.調用render函數返回一個網頁:

render 英文是提供的意思:

render 是一個主要用來返回一個html模板頁面的函數。

render(request,template_name,context=None,content_type=None,status=None,

using=None)

此方法的作用是:接收到一個請求,結合一個給定的模板和一個給定的context上下文字典,並返回一個渲染后的 HttpResponse 對象。通俗的講就是接收到一個請求,然后指定好一個html模板,並把上下文context字典中的內容, 加載進templates_name中指定的模板文件, 並通過瀏覽器渲染呈現.

參數詳解:

request: 是一個固定參數, 就是指通過接受到的通過wsgi處理過的客戶端瀏覽器請求數

據。

template_name:templates中定義的HTML文件, 要注意路徑比如'templates\polls\index.html', 參數就要寫‘polls\index.html’

context: 要傳入上下文中用於渲染呈現的數據, 默認是一個字典格式,鍵即下文html模板中需要被替換的元素,鍵值即在views視圖函數中需要傳到html模板中變量需要替換成的值。

content_type: 生成的文檔要使用的MIME 類型。默認為DEFAULT_CONTENT_TYPE 設置的值。

status: http的響應代碼,默認是200.

using: 用於加載模板使用的模板引擎的名稱。

常見的MIME類型(通用型):

超文本標記語言文本 .html text/html

xml文檔 .xml text/xml

XHTML文檔 .xhtml application/xhtml+xml

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

PDF文檔 .pdf application/pdf

Microsoft Word文件 .word application/msword

PNG圖像 .png image/png

GIF圖形 .gif image/gif

JPEG圖形 .jpeg,.jpg image/jpeg

au聲音文件 .au audio/basic

MIDI音樂文件 mid,.midi audio/midi,audio/x-midi

RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

任意的二進制數據 application/octet-stream

注:使用默認就能返回所有類型。

 

from django.shortcuts import render

def index(request):

    context={}                          #首先初始化這個字典

    context['hello']= "Hello World!"   #context中的hello鍵代表Hello World!字

符串

    return render(request, 'index.html', context)

 

而在index.html文件中:

 

參數hello需要用雙括號括起來代表需要替換的字符:

如圖中的{{hello}}

而在views視圖文件中的context字典則代表了上下文需要替換的文字和字符串,即context字典元素中的鍵值即末班中需要替換的變量。即context 字典中元素的鍵值 "hello" 對應了模板中的變量 "{{ hello }}"。

 

這樣通過render函數我們就完成了使用模板來輸出數據,從而實現數據與視圖分離。

 

四.調用redirect 函數重定向

redirect:英文意思改變線路,改變方向,在我們這里是重定向的意思。

 

參數可以是:

一個模型:將調用模型的get_absolute_url() 函數

一個視圖,可以帶有參數:將使用urlresolvers.reverse 來反向解析名稱

一個絕對的或相對的URL,將原封不動的作為重定向的位置,即返回一個模板位置。

默認返回一個臨時的重定向;傳遞permanent=True 可以返回一個永久的重定向。

 

示例:

你可以用多種方式使用redirect() 函數。

 

傳遞一個對象:

將調用get_absolute_url() 方法來獲取重定向的URL:

from django.shortcuts import redirect

def my_view(request):

    ...

    object = MyModel.objects.get(...)

    return redirect(object)

 

傳遞一個視圖的名稱:

可以帶有位置參數和關鍵字參數;將使用reverse() 方法反向解析URL: 

def my_view(request):

    ...

    return redirect('some-view-name', foo='bar')

 

傳遞要重定向的一個硬編碼的URL

def my_view(request):

    ...

    return redirect('/some/url/')

也可以是一個完整的URL,可以是返回外部的網站,這里測試返回百度網站:

 

from django.shortcuts import render,redirect

def blog(request):

    return redirect("http://www.baidu.com")

 

def my_view(request):

    ...

    return redirect('http://example.com/')

默認情況下,redirect() 返回一個臨時重定向。以上所有的形式都接收一個permanent 參數;如果設置為True,將返回一個永久的重定向:

def my_view(request):

    ...

    object = MyModel.objects.get(...)

    return redirect(object, permanent=True)  


免責聲明!

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



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