Maison  >  Article  >  développement back-end  >  vue de classe

vue de classe

巴扎黑
巴扎黑original
2017-06-23 16:30:431595parcourir

Vue de classe

Principes d'utilisation
  • Coder moins c'est mieux

  • Ne jamais dupliquer le code

  • La vue ne doit contenir que la logique de présentation, pas la logique métier

  • Gardez la logique d'affichage claire et simple

  • N'utilisez pas de CBV comme gestionnaires d'erreurs pour 403, 404, 500

  • Gardez le mixin simple et clair

mixin
En programmation, mixin fait référence à A la classe qui en hérite fournit des fonctionnalités supplémentaires, mais elle ne peut pas être utilisée seule
Dans les langages de programmation dotés de plusieurs capacités d'héritage, les mixins peuvent ajouter des fonctionnalités ou des méthodes supplémentaires à la classe. Dans Django, nous pouvons utiliser des mixins pour fournir. plus d'extensibilité pour les CBV Bien sûr, dans le processus d'héritage de classe, nous recommandons les principes suivants :
  • La vue fournie par Django lui-même est toujours à l'extrême droite

    <.>
  • mixin est à son tour sur le côté gauche de la vue ci-dessus

  • mixin hérite toujours du type d'objet de Python

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

Afficher

django.views.generic. base.View
Le cœur des vues de base basées sur les classes. Toutes les autres vues basées sur une classe héritent de cette classe de base.
 django.shortcuts  django.views.generic state =http_method_names = [, , , , , , ,  dispatch(self, request, *args, **(= super(Index,self).dispatch(request, *args, **( HttpResponse( HttpResponse()

TemplateView

Hérite des méthodes et des propriétés des vues suivantes
  1. <span class="pln">django<span class="pun">.<span class="pln">vues<span class="pun">.<span class="kwd">générique<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin<p><code class="language-c"><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>

    <span class=" pln">django<span class="pun">.<span class="pln">views<span class="pun">.<span class="kwd">générique<span class="pun">. base<span class="pun">.<span class="typ">ContextMixin</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
<span class="pln">django<span class="pun">.<span class="pln">vues<span class="pun">.<span class="kwd">générique<span class="pun">.<span class="pln">base<span class="pun"> .<span class="typ">Afficher<p></p></span></span></span></span></span></span></span></span></span>

Exemple
  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>

RedirectView
 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)

Hérite des méthodes et des propriétés de :

<span class="pln">django<span class="pun">.<span class="pln">vues<span class="pun"> .<span class="kwd">générique<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">View<div> </div></span></span></span></span></span></span></span></span></span>

<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>

Exemple
DetaliView<span class="typ">DetailView<span class="pun"> est une analyse détaillée de l'un des nombreux <span class="pln">objet<span class="pun"> de ces éditeurs. Il obtient des données de base. <span class="pln">objet<span class="pun">. </span></span></span></span></span></span>Hérite des méthodes et des propriétés des vues suivantes :
  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]

 

 

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

 

 
 

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn