>  기사  >  백엔드 개발  >  수업 모습

수업 모습

巴扎黑
巴扎黑원래의
2017-06-23 16:30:431596검색

클래스 뷰

사용 원칙
  • 코드가 적을수록 좋습니다

  • 코드를 반복하지 마세요

  • 뷰에는 비즈니스 로직이 아닌 프레젠테이션 로직만 포함되어야 합니다.

  • 뷰 로직을 명확하고 단순하게 유지하세요

  • 403, 404, 500에 대한 오류 처리기로 CBV를 사용하지 마세요

  • 믹스인을 단순하고 명확하게 유지하세요

mixin
프로그래밍에서 A 믹스인은 다음을 가리킨다. 상속받은 클래스에 추가 기능을 제공하는 클래스이지만 단독으로 사용할 수는 없습니다
다중 상속 기능이 있는 프로그래밍 언어에서 믹스인은 클래스에 추가 기능이나 메서드를 추가할 수 있습니다. Django에서는 믹스인을 사용할 수 있습니다. 물론 클래스 상속 프로세스에서는 다음 원칙을 권장합니다.
    Django 자체에서 제공하는 뷰는 항상 맨 오른쪽에 있습니다.
  • mixin은 CBV의 왼쪽에 있습니다. 위의 뷰는 차례로
  • 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">views<span class="pun">.<span class="kwd">generic<span class=" 말장난 ">.<span class="pln">기본<span class="pun">.<span class="typ">TemplateResponseMixin<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>

  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">ContextMixin</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">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">views<span class="pun">.<span class="kwd ">generic<span class="pun">.<span class="pln">base<span class="pun">.<span class="typ">ContextMixin🎜🎜🎜🎜🎜🎜🎜🎜🎜 코드 >🎜🎜🎜🎜<code class="언어-c"><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>🎜🎜🎜🎜🎜🎜🎜🎜예🎜🎜🎜
 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="입니다.">을 자세히 분석하여 얻은 주요 데이터는 <span class="pln">객체<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]

 

 

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.