日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Django4.0教程:Django4.0 基于類的視圖-基礎(chǔ)示例

Django 提供了適用于很多應(yīng)用的基本視圖類。所有視圖繼承自 ?View?類,它處理視圖鏈接到 ?URLs?,HTTP 方法調(diào)度和其他簡(jiǎn)單功能。?RedirectView?用于 HTTP 重定向,?TemplateView? 擴(kuò)展基類來使它能渲染模板。

在URLconf中的用法

使用通用視圖最直接的方式是在 ?URLconf?中直接創(chuàng)建它們。如果你只在基于類的視圖上改變一些屬性,那么你可以把它們傳遞到 ?as_view()? 方法中調(diào)用:

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path('about/', TemplateView.as_view(template_name="about.html")),
]

任何傳遞到 ?as_view()?  的參數(shù)將覆蓋在類上設(shè)置的屬性。在這個(gè)例子中,我們?cè)??TemplateView?上設(shè)置 ?template_name?。一個(gè)相似的覆蓋模式可用于 ?RedirectView?上的 url 屬性。

子類化通用視圖

使用通用視圖更有力的方式是繼承已存在的視圖并覆蓋子類里的屬性(比如 ?template_name?)或方法(比如 ?get_context_data?)來提供新的值或方法。例如,考慮只顯示一個(gè) ?about.html? 模板的視圖。Django 的 ?TemplateView?可以完成這個(gè)工作,因此我們可以將其子類化并重寫模板名稱:

# some_app/views.py
from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"

最后我們需要在 ?URLconf?中添加這個(gè)新視圖。?TemplateView?只是一個(gè)類,而不是一個(gè)函數(shù),因此我們將 URL 指向 ?as_view()? ,它為基于類的視圖提供一個(gè)類似函數(shù)的入口:

# urls.py
from django.urls import path
from some_app.views import AboutView

urlpatterns = [
    path('about/', AboutView.as_view()),
]

支持其他HTTP方法

如果某人想將視圖作為 API 來訪問圖書館。API 客戶端會(huì)時(shí)不時(shí)地連接并下載上次訪問過后出版的書籍?dāng)?shù)據(jù)。但如果沒有新的書籍出現(xiàn),那么從數(shù)據(jù)庫中獲取書籍,渲染一個(gè)完整響應(yīng)并發(fā)送它到客戶端的話,這將浪費(fèi)CPU時(shí)間和帶寬。當(dāng)出版最新的書時(shí),它訪問 API 最好。

我們需要在 ?URLconf?中映射 URL 到書籍列表視圖:

from django.urls import path
from books.views import BookListView

urlpatterns = [
    path('books/', BookListView.as_view()),
]

還有視圖:

from django.http import HttpResponse
from django.views.generic import ListView
from books.models import Book

class BookListView(ListView):
    model = Book

    def head(self, *args, **kwargs):
        last_book = self.get_queryset().latest('publication_date')
        response = HttpResponse(
            # RFC 1123 date format.
            headers={'Last-Modified': last_book.publication_date.strftime('%a, %d %b %Y %H:%M:%S GMT')},
        )
        return response

如果從 ?GET?請(qǐng)求訪問視圖,將在響應(yīng)(使用 ?book_list.html? 模板)中返回一個(gè)干凈的對(duì)象列表。但如果客戶端發(fā)出一個(gè) ?HEAD?請(qǐng)求,那么將響應(yīng)一個(gè)空 ?body?和 ?Last-Modified? 頭將標(biāo)識(shí)最新書籍的出版時(shí)間?;谶@些信息,客戶端可以選擇是否下載一個(gè)完整的對(duì)象類。


網(wǎng)站題目:創(chuàng)新互聯(lián)Django4.0教程:Django4.0 基于類的視圖-基礎(chǔ)示例
文章出自:http://www.dlmjj.cn/article/cddjooc.html