Jadual Kandungan
类视图
 " > 
View
TemplateView" >TemplateView
RedirectView" >RedirectView
DetaliView
ListView

类视图

Jun 23, 2017 pm 04:30 PM
pandangan

 

类视图

使用原则
  • 代码越少越好

  • 永远不要重复代码

  • View应当只包含呈现逻辑, 不应包括业务逻辑

  • 保持view逻辑清晰简单

  • 不要将CBVs用作403, 404, 500的错误处理程序

  • 保持mixin简单明了

 
 
mixin
在编程中mixin是指为继承它的class提供额外的功能, 但它自身却不能单独使用的类
在具有多继承能力的编程语言中, mixin可以为类增加额外功能或方法. 在Django中, 我们可以使用mixin为CBVs提供更多的扩展性, 当然在类继承过程中, 我们推荐以下原则:
  • Django自身提供的View永远在最右边

  • mixin依次在以上view的左边

  • mixin永远继承自Python的object类型

Django mixin库:
 
 
常用的类视图
View                    基本View 可以在任何时候使用 见后面详细介绍
RedirectView            重新定向到其他URL 将访问"/log-in/"的用户重新定向到"/login/"TemplateView            显示Django 模板 一般网站中使用模板显示的页
ListView                显示对象列表 文章列表页
DetailView              显示对象详情 文章详细页
FormView                提交From 网站联系我们或emai订阅form
CreateView              创建对象 创建新文章页
UpdateView              更新对象 修改文章页
DeleteView              删除对象 删除文章页
Generic date views      显示一段时间内的对象 按时间归类的博客
Salin selepas log masuk

 

 

View

django.views.generic.base.View
基于类的基础视图的核心。其它所有的基于类的视图都继承自这个基础类。
 
 django.shortcuts  django.views.generic state =http_method_names = [, , , , , , ,  dispatch(self, request, *args, **(= super(Index,self).dispatch(request, *args, **( HttpResponse( HttpResponse()
Salin selepas log masuk
 
 
 

TemplateView

从以下视图继承方法和属性
  1. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="kwd">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  2. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="kwd">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">ContextMixin</span></span></span></span></span></span></span></span></span>

  3. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="kwd">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">View</span></span></span></span></span></span></span></span></span>

 
示例
 django.views.generic.base =  dispatch(self, request, *args, **(= super(HomePageView,self).dispatch(request, *args, **( get_context_data(self, **= super(HomePageView, self).get_context_data(**] = [,,( context
Salin selepas log masuk

 

 
 

RedirectView

从以下视图继承方法和属性:
  1. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="kwd">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">View</span></span></span></span></span></span></span></span></span>

 
示例
 django.views.generic.base == False  query_string = True  pattern_name =    dispatch(self, request, *args, **(= super(ArticleRedirectView,self).dispatch(request, *args, **( get_redirect_url(self, *args, **( super(ArticleRedirectView, self).get_redirect_url(*args, **kwargs)
Salin selepas log masuk

 

 
 
 
 
 
 

DetaliView

<span class="typ">DetailView<span class="pun">是对这些出版商的诸多的<span class="pln">object<span class="pun">中的一个进行详细解析,它获得的主数据是一个<span class="pln">object<span class="pun">。</span></span></span></span></span></span>

从以下视图继承方法和属性:
  1. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">detail<span class="pun">.<span class="typ">SingleObjectTemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  2. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  3. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">detail<span class="pun">.<span class="typ">BaseDetailView</span></span></span></span></span></span></span></span></span>

  4. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">detail<span class="pun">.<span class="typ">SingleObjectMixin</span></span></span></span></span></span></span></span></span>

  5. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">View</span></span></span></span></span></span></span></span></span>

 
示例
 django.contrib.auth.mixins  chouti.models ==   pk_url_kwarg =   

 get_context_data(self, **(context = super(UserDetailView, self).get_context_data(**] = [33, 44]
Salin selepas log masuk

 

 

ListView

对于ListView来说,它需要显示的是多个object的信息,返回的是一个对象列表
它的数据来源是model和queryset这两个属性:
  1. <span class="pln">model<span class="pun">:获取这个<span class="pln">model<span class="pun">相关的所有数据</span></span></span></span>

  2. <span class="pln">queryset<span class="pun">:从这个<span class="pln">queryset<span class="pun">中获取指定的数据。</span></span></span></span>

  3. <span class="pln">queryset<span class="pun">的优先级高于<span class="pln">model</span></span></span>

  4. <span class="pun">它所获取的数据是通过<span class="pln">context<span class="pun">中<span class="pln">object_list<span class="pun">这个变量来传递的</span></span></span></span></span>

 
 
从以下视图继承方法和属性:
  1. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">list<span class="pun">.<span class="typ">MultipleObjectTemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  2. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin</span></span></span></span></span></span></span></span></span>

  3. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">list<span class="pun">.<span class="typ">BaseListView</span></span></span></span></span></span></span></span></span>

  4. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">generic<span class="pun">.<span class="pln">list<span class="pun">.<span class="typ">MultipleObjectMixin</span></span></span></span></span></span></span></span></span>

  5. <span class="pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="pln">gen</span></span></span></span></span>

 
 
示例
 blog.models  django.views.generic model = Post   queryset = Post.objects.filter(title__contains = )  context_object_name =   template_name=   ( Post.objects.filter(title__contains = self.kwargs[ get_context_data(self, **(= super(PublisherList, self).get_context_data(**kwargs)  context[] = [, ]    context
Salin selepas log masuk

 

 
 

Atas ialah kandungan terperinci 类视图. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk melaksanakan jadual boleh diedit dalam Vue Bagaimana untuk melaksanakan jadual boleh diedit dalam Vue Nov 08, 2023 pm 12:51 PM

Jadual adalah komponen penting dalam banyak aplikasi web. Jadual biasanya mempunyai jumlah data yang besar, jadi jadual memerlukan beberapa ciri khusus untuk meningkatkan pengalaman pengguna. Salah satu ciri penting ialah keboleheditan. Dalam artikel ini, kami akan meneroka cara melaksanakan jadual boleh diedit menggunakan Vue.js dan memberikan contoh kod khusus. Langkah 1: Sediakan data Mula-mula, kita perlu menyediakan data untuk jadual. Kita boleh menggunakan objek JSON untuk menyimpan data jadual dan menyimpannya dalam sifat data bagi contoh Vue. Dalam kes ini

Mod siap sedia iOS 17 menukarkan iPhone yang sedang mengecas menjadi hab rumah Mod siap sedia iOS 17 menukarkan iPhone yang sedang mengecas menjadi hab rumah Jun 06, 2023 am 08:20 AM

Dalam iOS 17 Apple memperkenalkan Mod Siap Sedia, pengalaman paparan baharu yang direka untuk mengecas iPhone dalam orientasi mendatar. Dalam kedudukan ini, iPhone dapat memaparkan satu siri widget skrin penuh, mengubahnya menjadi hab rumah yang berguna. Mod siap sedia diaktifkan secara automatik pada iPhone yang menjalankan iOS 17 yang diletakkan secara mendatar pada pengecas. Anda boleh melihat maklumat seperti masa, cuaca, kalendar, kawalan muzik, foto dan banyak lagi. Anda boleh leret ke kiri atau kanan melalui pilihan siap sedia yang tersedia dan kemudian tekan lama atau leret ke atas/bawah untuk menyesuaikan. Sebagai contoh, anda boleh memilih daripada paparan analog, paparan digital, fon gelembung dan paparan siang, di mana warna latar belakang berubah berdasarkan masa seiring dengan berlalunya masa. Terdapat beberapa pilihan

Fahami perbezaan dan perbandingan antara SpringBoot dan SpringMVC Fahami perbezaan dan perbandingan antara SpringBoot dan SpringMVC Dec 29, 2023 am 09:20 AM

Bandingkan SpringBoot dan SpringMVC dan fahami perbezaannya Dengan pembangunan Java yang berterusan, rangka kerja Spring telah menjadi pilihan pertama bagi banyak pembangun dan perusahaan. Dalam ekosistem Spring, SpringBoot dan SpringMVC ialah dua komponen yang sangat penting. Walaupun kedua-duanya adalah berdasarkan rangka kerja Spring, terdapat beberapa perbezaan dalam fungsi dan penggunaan. Artikel ini akan menumpukan pada membandingkan SpringBoot dan Spring

Bagaimana untuk menggunakan rangka kerja CodeIgniter4 dalam php? Bagaimana untuk menggunakan rangka kerja CodeIgniter4 dalam php? May 31, 2023 pm 02:51 PM

PHP ialah bahasa pengaturcaraan yang sangat popular, dan CodeIgniter4 ialah rangka kerja PHP yang biasa digunakan. Apabila membangunkan aplikasi web, menggunakan rangka kerja sangat membantu Ia boleh mempercepatkan proses pembangunan, meningkatkan kualiti kod dan mengurangkan kos penyelenggaraan. Artikel ini akan memperkenalkan cara menggunakan rangka kerja CodeIgniter4. Pasang rangka kerja CodeIgniter4 Rangka kerja CodeIgniter4 boleh dimuat turun dari laman web rasmi (https://codeigniter.com/). Bawah

Pembangunan Laravel: Bagaimana untuk menjana pandangan menggunakan Laravel View? Pembangunan Laravel: Bagaimana untuk menjana pandangan menggunakan Laravel View? Jun 14, 2023 pm 03:28 PM

Laravel ialah salah satu rangka kerja PHP yang paling popular pada masa ini, dan keupayaan penjanaan paparan yang berkuasa sangat mengagumkan. Paparan ialah halaman atau elemen visual yang dipaparkan kepada pengguna dalam aplikasi web, yang mengandungi kod seperti HTML, CSS dan JavaScript. LaravelView membenarkan pembangun menggunakan bahasa templat berstruktur untuk membina halaman web dan menjana paparan yang sepadan melalui pengawal dan penghalaan. Dalam artikel ini, kami akan meneroka cara menjana paparan menggunakan LaravelView. 1. Apa

Apakah pandangan dalam Word? Apakah pandangan dalam Word? Mar 19, 2024 pm 06:10 PM

Saya rasa ramai pelajar ingin mempelajari kemahiran menyusun kata, tetapi editor secara rahsia memberitahu anda bahawa sebelum mempelajari kemahiran menyusun huruf, anda perlu memahami pandangan perkataan dengan jelas Dalam Word2007, 5 paparan disediakan untuk dipilih oleh pengguna . Paparan, paparan reka letak membaca, paparan reka letak web, paparan garis besar dan paparan biasa, mari belajar tentang 5 paparan perkataan ini dengan editor hari ini. 1. Paparan halaman Paparan halaman boleh memaparkan rupa hasil cetakan dokumen Word2007, yang terutamanya termasuk pengepala, pengaki, objek grafik, tetapan lajur, jidar halaman dan elemen lain Ia adalah paparan halaman yang paling hampir dengan hasil cetakan. 2. Paparan susun atur membaca Paparan susun atur membaca memaparkan dokumen Word2007 dan Office dalam gaya lajur buku

Penjelasan terperinci tentang pandangan dalam rangka kerja Django Penjelasan terperinci tentang pandangan dalam rangka kerja Django Jun 17, 2023 am 10:18 AM

Django ialah rangka kerja web yang sangat disesuaikan yang menyediakan banyak alatan dan perpustakaan yang mudah untuk membantu pembangun dengan cepat mencipta aplikasi web berprestasi tinggi dan boleh skala. Antaranya, pandangan adalah salah satu komponen terpenting dalam rangka kerja Django. Views bertanggungjawab untuk memproses permintaan daripada pelanggan dan mengembalikan respons yang sepadan. Dalam artikel ini, kami akan menyelami pandangan dalam rangka kerja Django dan menerangkan cara menggunakannya untuk mencipta aplikasi web berprestasi tinggi dan boleh disesuaikan. 1. Konsep asas pandangan dalam Django

Microsoft mengemas kini Kod Visual Studio 1.80 Microsoft mengemas kini Kod Visual Studio 1.80 Jul 10, 2023 pm 08:13 PM

Microsoft baru-baru ini melancarkan Kod Visual Studio 1.80 Walaupun kemas kini ini dikeluarkan pada bulan Julai, pegawai itu masih memanggilnya kemas kini Jun. Selepas pengguna memasang kemas kini ini, terminal terbina dalam boleh terus memaparkan imej, dan fungsi tambahan juga telah dioptimumkan. Dalam versi pratonton Visual Studio Code yang dikeluarkan sebelum ini, sokongan untuk imej dalam terminal telah disokong dan ia didayakan secara lalai dalam versi 1.80 baharu. Untuk dapat memaparkan imej dalam terminal, data piksel imej ditukar kepada teks melalui urutan pelarian khas dan akhirnya ditulis ke terminal. Jika anda ingin menyalurkan fail PNG, GIF atau JPEG biasa ke terminal, anda perlu memasang pakej imgcatpython dan kemudian jalankan imgc dalam terminal

See all articles