クラスビュー

巴扎黑
リリース: 2017-06-23 16:30:43
オリジナル
1639 人が閲覧しました

クラスビュー

使用原則
  • コードは少ないほど良い

  • コードを繰り返さないでください

  • ビューにはビジネスロジックではなく、プレゼンテーションロジックのみを含める必要があります

  • ビューのロジックを明確かつ単純にしてください

  • CBV を 403、404、500 のエラー ハンドラーとして使用しないでください

  • ミックスインをシンプルかつ明確にしてください

mixin
ミックスインとは継承するクラスに追加の機能を提供するクラスに追加しますが、単独で使用することはできません
複数の継承機能を持つプログラミング言語では、ミックスインはクラスに追加の機能やメソッドを追加できます。 Django では、ミックスインを使用できます。 CBV のスケーラビリティを高めるために、もちろん、クラス継承プロセスでは次の原則をお勧めします:
    Django 自体によって提供される View は常に右端にあります
  • mixin は左側にあります。上記のビューは順番に
  • mixin は常に Python のオブジェクト型を継承します
  • Django mixin ライブラリ:
よく使用されるクラスビュー
View                    基本View 可以在任何时候使用 见后面详细介绍
RedirectView            重新定向到其他URL 将访问"/log-in/"的用户重新定向到"/login/"TemplateView            显示Django 模板 一般网站中使用模板显示的页
ListView                显示对象列表 文章列表页
DetailView              显示对象详情 文章详细页
FormView                提交From 网站联系我们或emai订阅form
CreateView              创建对象 创建新文章页
UpdateView              更新对象 修改文章页
DeleteView              删除对象 删除文章页
Generic date views      显示一段时间内的对象 按时间归类的博客
ログイン後にコピー

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()
ログイン後にコピー
TemplateView

次のビューからメソッドとプロパティを継承します
<span class="pln">django<span class="pun">.<span class="pln">ビュー<span class="pun">.<span class="kwd">ジェネリック<span class=" pun ">.<span class="pln">base<span class="pun">.<span class="typ">TemplateResponseMixin<ol class="linenums list-paddingleft-2"> <li><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>

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

  • <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
    ログイン後にコピー

     

     
     

    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)
    ログイン後にコピー

     

     
     
     
     
     
     

    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>

    🎜🎜🎜<span class="pln">django<span class="pun">.<span class="pln">ビュー<span class="pun">.<span class="kwd ">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">ContextMixin🎜🎜🎜🎜🎜🎜🎜🎜🎜コード >🎜🎜🎜🎜<code class=" language-c"><span class="pln">django<span class="pun">.<span class="pln">ビュー<span class="pun"> .<span class="kwd">ジェネリック<span class="pun">.<span class="pln">ベース<span class="pun">.<span class="typ">ビュー🎜🎜🎜 🎜 🎜🎜🎜🎜🎜</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]
    ログイン後にコピー
    ログイン後にコピー
    🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜 🎜RedirectView🎜🎜🎜🎜 は、次のビュー: 🎜🎜🎜🎜🎜🎜🎜<span class="pln">django<span class="pun">.<span class="pln">views<span class="pun ">.<span class="kwd">ジェネリック<span class="pun">.<span class="pln">ベース<span class="pun">.<span class="typ">表示🎜🎜 🎜🎜🎜🎜🎜🎜🎜</span></span></span></span></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
    ログイン後にコピー
    ログイン後にコピー
    🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜DetaliView 🎜🎜<span class="typ">DetailView<span class="pun">は、多くの場合の<span class="pln">オブジェクト<span class="これらの発行者の「pun」は詳細に分析され、取得される主なデータは<span">オブジェクト<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">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
    ログイン後にコピー
    ログイン後にコピー

     

     
     

    以上がクラスビューの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート