login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...,各种有用的对象被存储在self上,同request(self.request)一样,其中包含了从URLconf中获取到的位置参数(self.args)和关键字参数(self.kwargs)....get_context_data(**kwargs):返回显示对象的上下文数据.这个方法的基本实现需要object属性被视图赋值(即使是None).它返回一个包含这些内容的字典: object:这个视图显示的对象...(): get_queryset(): *get_context_data(**kwargs):* delete(request, args, **kwargs):*在获取到的对象上调用delete()
1.ListView ? 表示对象列表的一个页面. 执行这个视图的时候,self.object_list将包含视图正在操作的对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...,各种有用的对象被存储在self上,同request(self.request)一样,其中包含了从URLconf中获取到的位置参数(self.args)和关键字参数(self.kwargs)....get_context_data(**kwargs):返回显示对象的上下文数据.这个方法的基本实现需要object属性被视图赋值(即使是None).它返回一个包含这些内容的字典: object:这个视图显示的对象...(): get_queryset(): *get_context_data(**kwargs):* delete(request, args, **kwargs):*在获取到的对象上调用delete()
Class-based views是Django为解决建站过程中的常见的呈现模式而建立的。...django自带的view如下表所示: 类名 功能 例子 View 基本View, 可以在任何时候使用 见后面详细介绍 RedirectView 重新定向到其他URL 将访问"/log-in/"的用户重新定向到..."/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...ListView简介 listview是一个展示列表的view,返回的是一个template,包含两个关键方法: def get_context_data(self, **kwargs):...在Django中, 我们可以使用mixin为CBVs提供更多的扩展性, 当然在类继承过程中, 我们推荐以下原则: Django自身提供的View永远在最右边 mixin依次在以上view的左边 mixin
将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...然后就是通过一些属性来指定这个视图函数需要做的事情。这里我们指定了三个属性。 model。将 model 指定为 Post,告诉 Django 我要获取的模型是 Post。...在 Django 中 URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。...不过注意一点的是,在类视图中,从 URL 捕获的命名组参数值保存在实例的 kwargs 属性(是一个字典)里,非命名组参数值保存在实例的 args 属性(是一个列表)里。...首先我们为 PostDetailView 类指定了一些属性的值,这些属性的含义和 ListView 中是一样的,这里不再重复讲解。 紧接着我们覆写了 get 方法。
最后将视图解析到你的url上: # urls.py from django.conf.urls import url from books.views import PublisherList urlpatterns...在一个通用视图上的context_object_name属性指定了要使用的定了上下文变量: # views.py from django.views.generic import ListView from...动态过滤 另一个普遍的需求是在给定的列表页面中根据URL中的关键字来过滤对象。...相当方便的是, ListView 有一个get_queryset() 方法来供我们重写。在之前,它只是返回一个queryset属性值,但是现在我们可以添加更多的逻辑。...让这种方式能够工作的关键点,在于当类视图被调用时,各种有用的对象被存储在self上;同request()(self.request)一样,其中包含了从URLconf中获取到的位置参数 (self.args
将 index 视图函数改写为类视图 针对这种从数据库中获取某个模型列表数据(比如这里的 Post 列表)的视图,Django 专门提供了一个 ListView 类视图。...然后就是通过一些属性来指定这个视图函数需要做的事情,这里我们指定了三个属性: model:将 model 指定为 Post,告诉 django 我要获取的模型是 Post。...在 Django 中 URL 模式的配置方式就是通过 url 函数将 URL 和视图函数绑定。...不过注意一点的是,在类视图中,从 URL 捕获的路径参数值保存在实例的 kwargs 属性(是一个字典)里,非路径参数值保存在实例的 args 属性(是一个列表)里。...首先我们为 PostDetailView 类指定了一些属性的值,这些属性的含义和 ListView 中是一样的,这里不再重复讲解。 紧接着我们覆写了 get 方法。
manage.py runserver $ python manage.py collectstatic 一般在urls.py中配置url,在models.py中配置model,在views.py中配置...Django中的一对多是在一中进行设置,这里对应于文章的分类,ForeignKey即数据库中的外键。...from blog.models import Article, Tag, Category from django.views.generic import ListView, DetailView...import markdown2 class IndexView(ListView): # template_name属性用于指定使用哪个模板进行渲染 template_name =...里的cate_id传递给CategoryView,传递的参数在kwargs属性中获取 article_list = Article.objects.filter(category=self.kwargs
在本讲中,我们开始首页功能的开发,在开发过程中,大家将会学习到Django中的通用视图类、分页对象paginator以及foreignKey外键的使用。 效果演示 [16851ab0d057a5d6?...显示列表数据非常简单,我们使用django中内置的视图模版类ListView来显示,首先在view.py中编写IndexView类,用它来显示列表数据。...这里我们使用到了django中的内置标签,比如for语句、empty语句。这些都是django中非常常用的语句。在之后的教程中我们会经常遇到。...将获取到的classification_list追加到context字典中。...我们用到了page_obj对象的几个属性:has_previous、previous_page_number、next_page_number。
:视图及模版》 《django入门:Admin管理系统及表单》 终于到最后一部分了,这部分我们将通过 django 自带的通用视图类替换之前写的视图函数,对视图进行重构 2 利用 django 通用视图类创建类视图...捕获的命名组参数值保存在实例的 kwargs 中,是一个字典 # 非命名组参数值保存在实例的 args 中,是一个列表 category = get_object_or...) # 只有当 get 方法被调用后才有 self.object 属性,即 post 实例 # 对应 post_detail 函数中的 post.increase_views...ListView 中的 paginate_by 属性来设置分页 class PostListView(ListView): model = Post template_name = 'blog...优化分页列表 最后我们列下 Paginator 常用属性结束 django 的入门教程,接下来会有 DRF 的入门教程,django 算是其基础吧,DRF 实现了前后端分离,刚好适合我这种 Android
以此类推,如果只需要实现post方法,那么就只需要在类中实现post(self,request,*args,**kwargs)。...在这个类中,有两个属性是经常需要用到的,一个是template_name,这个属性是用来存储模版的路径,TemplateView会自动的渲染这个变量指向的模版。...**kwargs) context['username'] = "juran" return context 在urls.py中的映射代码如下: from django.urls...在网站开发中,经常会出现需要列出某个表中的一些数据作为列表展示出来。比如文章列表,图书列表等等。在Django中可以使用ListView来帮我们快速实现这种需求。...他们在Django中的路径为django.core.paginator.Paginator和django.core.paginator.Page。
Django源码学习-8-ListView&DetailView通用视图 ?...Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...from django.views.generic import ListView ListView 通过重写queryset, template_name和context_object_name来完成...get_context_object_name()] extra_context model queryset 用来代替 model, 比如: Publisher.objects.all()[:10] 模板 context 中的变量名会有...model / queryset 指定的 objects 添加到模板 context get_queryset() 默认返回属性 queryset from django.views.generic import
如果你只是修改基于类的视图的一些简单属性,你可以将它们直接传递给as_view()方法调用: from django.conf.urls import url from django.views.generic...")), ] 传递给as_view()的参数将覆盖类中的属性。...在这个例子中,我们设置TemplateView的template_name。可以使用类似的方法覆盖RedirectView的url属性。...TemplateView是一个类不是一个函数,所以我们将URL 指向类的as_view()方法,它让基于类的视图提供一个类似函数的入口: # urls.py from django.conf.urls...django.views.generic import ListView from books.models import Book class BookListView(ListView):
本文将通过拓展 Django Pagination 来实现下图这样比较完善的分页效果。...始终显示第一页和最后一页 当前页码高亮显示 显示当前页码前后几个连续的页码 如果两个页码号间还有其它页码,中间显示省略号以提示用户 类视图 ListView 由于在开发网站的过程中,有一些视图函数虽然处理的对象不同...ListView 用来从数据库获取一个对象列表,而对列表进行分页的过程也是比较通用的,ListView 已经实现了分页功能。...所以我们直接使用 ListView 而不是自己写分页逻辑,以达到代码复用的目的。 ListView 的使用非常简单,只需要将你自己的视图继承 ListView ,然后复写一些属性和方法即可。...context 中 context.update(pagination_data) # 将更新后的 context 返回,以便 ListView 使用这个字典中的模板变量去渲染模板
import ListView from blog.models import BlogPost path(r'bloglist/',ListView.as_view(template_name='...from django.views.generic import ListView class IndexView(ListView): template_name = "blog/index.html...): kwargs['category_list'] = Category.objects.all().order_by('name') return super(IndexView,...self).get_context_data(**kwargs) 6、DetailView用法: class ArticleDetailView(DetailView): model = Article... 11、FormView:FormView一般用来展示某个表单,而不是某个模型对象。
接着我们便使用该实例的 convert 方法将 post.body 中的 Markdown 文本渲染成 HTML 文本。...会对模板中的 HTML 代码进行转义,所以要使用 safe 标签防止 Django 对其转义。...其最终渲染后的效果就是: image.png 美化标题的锚点 URL 文章内容的标题被设置了锚点,点击目录中的某个标题,页面就会跳到该文章内容中标题所在的位置,这时候浏览器的 URL 显示的值可能不太美观...markdown.extensions.toc import TocExtension class PostDetailView(DetailView): # 这些属性的含义和 ListView...Markdown 内置的处理方法不能处理中文标题,所以我们使用了 django.utils.text 中的 slugify 方法,该方法可以很好地处理中文。
介绍 无论是类视图还是基于函数的视图, 最终绑定到 URL Conf 的都是函数. 为什么这么说? 函数绑定到 URL 上面很显式的证明了绑定的是函数, 这一点毋庸置疑。...调用后, 视图将请求传递给dispatch() 方法,该方法将根据请求的类型(GET, POST, PUT, etc)执行响应的方法(详情参考django/views/generic/base.py,...基于类的通用视图(GV) Django 引入了基于类的通用视图, 来处理 web 常见的用例需求, 比如创建新对象,表单处理,列表视图,分页,归档视图等....例如我想实现一个博客, 对首页展示博客的列表, 我只需要适用一个通用视图ListView并覆盖其 queryset 属性即可大功告成....又假如你要实现一个复杂的请求, 如一次处理多个表单,基于函数的视图的灵活性将更好为你服务.
开发环境: python 3.6 django 1.11 场景一 经常有从数据库中获取一批数据,然后在前端以列表的形式展现,比如:获取到所有的用户,然后在用户列表页面展示。...针对这种常用场景,提供了一个更快速便捷的方式,那就是ListView,用法如下: from django.views.generic import ListView class UsersView(ListView...代码如下: from django.views.generic import ListView class UsersView(ListView): model = UserProfile...,代码如下: from django.views.generic import ListView class UsersView(ListView): model = UserProfile...场景四 我想要限制接口的请求方式,比如限制只能GET访问,代码如下: from django.views.generic import ListView class UsersView(ListView
使用 Django 的模型,都是 django.db.models.Model 类的子类。 每个类将被转成数据库表。 每个字段由 django.db.models.Field 子类转成数据库的列。...在 论坛的回帖模型中,related_name = "+",不需要这种反向关系,不需要关系用户修改过哪些帖子。...import login_required from django.views.generic import UpdateView, ListView from django.utils import...= reverse('users:new_posts', kwargs={"pk": pk, "topic_pk": topic_pk}) topic_post_url = '...{url}?
现在我们来给博客实现这个效果,让 Django 从数据库中获取全部标签的数据列表,然后在模板中显示它们,并且点击相应的标签,就可以显示该标签下的全部文章列表。...我们定义一个 get_tags 模板标签,获取到文章数大于 0 的标签列表,然后在模板中渲染显示它。...回顾一下显示分类下的文章列表时的做法,经典的 Django 三部曲。首先是定义视图函数,然后编写模板文件,最后将视图函数和 URL 模式绑定。...,这个属性通过多对多的关系关联着 Tag。...因此大体思路就清晰了,我们可以在文章的详情页模板中,通过 post.tags.all() 获取到这篇 post 下的标签列表。
开发环境 1. python: 3.6.8 2. django==1.11.22 models.py from django.db import models from django.db.models.signals...from pyquery import PyQuery as pq # pip install pyquery,获取到 html 中的 img 图片地址返回 from uuslug import slugify...): self.slug = slugify(self.title) super(Article, self).save(*args, **kwargs) #...获取后台文本编辑器图文内容中图片 url 地址 def get_content_img_url(self): temp = Article.objects.filter(pk=str...from django.core.cache import cache from ipware.ip import get_ip class IndexView(generic.ListView)
领取专属 10元无门槛券
手把手带您无忧上云