Tampilan dasarLink to this heading
Tiga Kelas-kelas berikut menyediakan lebih banyak kegunaan dibutuhkan untuk membuat tampilan Django. Anda mungkin berpikir dari mereka sebagai tampilan induk, yang dapat digunakan mereka sendiri atau diwarisi dari. Mereka mungkin tidak menyediakan semua kemampuan diwajibkan oleh proyek, dalam hal ini ada tampilan Mixin dan Generic berdasarkan-kelas.
Banyak tampilan berdasarkan-kelas siap-pakai Django dari tampilan berdasarkan-kelas lain atau beragam mixin. Karena rantai pewarisan ini sangat penting, kelas-kelas leluhur didokumentasikan dibawah judul dari Ancestors (MRO). MRO adalah sebuah singkatan untuk Method Resolution Order.
ViewLink to this heading
- class django.views.generic.base.ViewLink to this definition
Tampilan dasar berdasarkan-kelas master. Semua tampilan berdasarkan-kelas lainnya mewarisi dari kelas dasar. Itu tidak mengetatkan tampilan umum dan demikian juga dapat diimpor dari
django.views.Metode Diagram alir
Contoh views.py:
from django.http import HttpResponse from django.views import View class MyView(View): def get(self, request, *args, **kwargs): return HttpResponse('Hello, World!')Contoh urls.py:
from django.urls import path from myapp.views import MyView urlpatterns = [ path('mine/', MyView.as_view(), name='my-view'), ]Atribut
- http_method_namesLink to this definition
Daftar dari nama-nama metode HTTP yang tampilan ini akan diterima.
Awal:
['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
Cara
- classmethod as_view(**initkwargs)Link to this definition
Mengembalikan sebuah tampilan callable yang mengambil permintaan dan mengembalikan tanggapan:
response = MyView.as_view()(request)Tampilan kembalian mempunyai atribut
view_classdanview_initkwargs.Ketika tampilan dipanggil selama suklus permintaan/tanggapan , metode
setup()menugaskanHttpRequestke atributrequesttampilan, dan penempatan apapun dan/atau argumen katakunci captured from the URL pattern ke atributargsdankwargs, masing-masing. Kemudiandispatch()dipanggil.
- setup(request, *args, **kwargs)Link to this definition
Performs key view initialization prior to
dispatch().If overriding this method, you must call
super().
- dispatch(request, *args, **kwargs)Link to this definition
The
viewpart of the view -- the method that accepts arequestargument plus arguments, and returns an HTTP response.Penerapan awalan akan memeriksa metode HTTP dan berusaha untuk menugaskan pada sebuah metode yang cocok dengan metode HTTP; sebuah
GETakan ditugaskan keget(), sebuahPOSTkepost(), dan sebagainya.Berdasarkan awalan. permintaan
HEADakan ditugaskan padaget(). Jika anda butuh menangani permintaanHEADdi cara berbeda daripadaGET, anda dapat menimpa metodehead(). Lihat mendukung cara HTTP lain untuk contoh.
- http_method_not_allowed(request, *args, **kwargs)Link to this definition
If the view was called with an HTTP method it doesn't support, this method is called instead.
Penerapan awalan mengembalikan
HttpResponseNotAlloweddengan sebuah daftar dari metode yang diizinkan dalam teks polos.
- options(request, *args, **kwargs)Link to this definition
Menangani tanggapan pada permintaan untuk verb OPTIONS HTTP. Mengembalikan sebuah tanggapan dengan kepala
Allowmengandung sebuah daftar dari tampilan diizinkan nama-nama metode HTTP.
TemplateViewLink to this heading
- class django.views.generic.base.TemplateViewLink to this definition
Membangun cetakan yang diberikan, dengan konteks mengandung parameter ditangkap di URL.
Ancestors (MRO)
Tampilan ini mewarisi metode dan atribut dari tampilan berikut:
Metode Diagram alir
Contoh views.py:
from django.views.generic.base import TemplateView from articles.models import Article class HomePageView(TemplateView): template_name = "home.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['latest_articles'] = Article.objects.all()[:5] return contextContoh urls.py:
from django.urls import path from myapp.views import HomePageView urlpatterns = [ path('', HomePageView.as_view(), name='home'), ]Konteks
Dikumpulkan (melalui
ContextMixin) dengan argumen kata kunci ditangkap dari corak URL yang melayani tampilan.Anda dapat juga menambahkan konteks menggunakan argumen katakunci
extra_contextuntukas_view().
RedirectViewLink to this heading
- class django.views.generic.base.RedirectViewLink to this definition
Pengalihan ke URL yang diberikan.
URL yang diberikan mungkin memberikan pembentukan string gaya-kamus, yang akan disisipkan terhadap parameter ditangkap di URL. Karena penyisipan kata kunci adalah selalu selesai (bahkan jika tidak ada argumen dilewatkan), setiap karakter
"%"di URL harus ditulis sebagai"%%"sehingga Python akan merubah mereka ke tanda persen tunggal pada keluaran.Jika URL diberikan adalah
None, Django akan mengembalikan sebuahHttpResponseGone(410).Ancestors (MRO)
Tampilan ini mewarisi metode dan atribut dari tampilan-tampilan berikut:
Metode Diagram alir
Contoh views.py:
from django.shortcuts import get_object_or_404 from django.views.generic.base import RedirectView from articles.models import Article class ArticleCounterRedirectView(RedirectView): permanent = False query_string = True pattern_name = 'article-detail' def get_redirect_url(self, *args, **kwargs): article = get_object_or_404(Article, pk=kwargs['pk']) article.update_counter() return super().get_redirect_url(*args, **kwargs)Contoh urls.py:
from django.urls import path from django.views.generic.base import RedirectView from article.views import ArticleCounterRedirectView, ArticleDetailView urlpatterns = [ path('counter/<int:pk>/', ArticleCounterRedirectView.as_view(), name='article-counter'), path('details/<int:pk>/', ArticleDetailView.as_view(), name='article-detail'), path('go-to-django/', RedirectView.as_view(url='https://www.djangoproject.com/'), name='go-to-django'), ]Atribut
- urlLink to this definition
URL untuk dialihkan, sebagai deretan kalimat. Atau
Noneuntuk memunculkan kesalahan HTTP 410 (Pergi).
- pattern_nameLink to this definition
Nama dari corak URL untuk dialihkan. Membalikkan akan selesai menggunakan args dan kwargs sama dilewatkan untuk tampilan ini.
- permanentLink to this definition
Apakah pengalihan harus tetap. Satu-satunya perbedaan disini adalah kode status HTTP dikembalikan. Jika
True, kemudian pengalihan akan menggunakan kode status 301. JikaFalse, kemudian pengalihan akan menggunakan kode status 302. Secara awalan,permanentadalahFalse.
- query_stringLink to this definition
Apakah dilewatkan bersama string permintaan GET ke tempat baru. Jika
True, kemudian string permintaan ditambahkan ke URL. JikaFalse, kemudian string permintaan dibuang. Secara awalan,query_stringadalahFalse.
Cara
- get_redirect_url(*args, **kwargs)Link to this definition
Membangun URL sasaran untuk pengalihan.
The
argsandkwargsarguments are positional and/or keyword arguments captured from the URL pattern, respectively.Penerapan awal menggunakan
urlsebagai deretan karakter permulaan dan melakukan perluasan dari%parameter dinamai di deretan karakter itu menggunakan kelompok dinamai diambil di URL.Jika
urltidak disetel,get_redirect_url()mencoba membalikkanpattern_namemenggunakan apa yang telah ditangkap di URL (kedua kelompok bernama dan tidak bernama digunakan).Jika diminta oleh
query_string, itu akan juga menambahkan string permintaan ke URL yang dibangkitkan. Subkelas-subkelas mungkin menerapkan perilaku apapun mereka inginkan, selama metode mengambalikan string URL siap-pengalihan.