首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django来敲门~第一部分【9.使用Django内置视图处理对象简化开发】

内置视图处理对象的定义 对于我们视图处理函数,从最原始的HttpResponse()来进行页面数据的输出,render()函数进行模板页面的操作,已经可以满足我们的需求了,但是Django赶脚还不够...常规情况下,对应页面中要展示数据列表的视图,通过继承Django的django.views.generic.ListView对象来实现,页面中要展示数据信息的视图,通过继承Django的django.views.generic.DetailView...视图对象的使用 经过上述的改造,我们可以看到视图处理函数已经变得非常的简洁,但是存在这样一个问题,IndexView处理类中的数据,我们可以看懂通过get_queryset()函数进行查询的,然后自动复制给变量...question_list,那么后面的DetailView和ResultView中的数据怎么来的呢?...我们可以在源代码中,看到各种操作的一些信息,官方注释用于使用对象数据来渲染详细信息页面的视图对象,继承的父类中,也定义了各种属性字段用于控制单个对象数据的展示操作 以上两个视图类,都间接继承了View

89030

Django内置的通用类视图CBV及示例

URL 将访问"/log-in/"的用户重新定向"/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示的页 ListView 显示对象列表...方法: get_queryset():返回用来获取本视图显示对象queryset.如果设置了queryset属性,get_queryset()默认返回它的值. get_object(queryset=...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...显示确认页面并删除现有对象的视图.仅当请求方法为POST时,才会删除给定的内容.如果此视图通过GET提取的,它将显示一个确认页面,其中包含POST同一网址的表单....方法,然后重定向success_url.

3.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

基于类的通用视图:ListViewDetailView

在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。...对处理首页的视图函数来说,虽然其处理的对象一个文章,另一个帖子,但是其处理的过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...好在将类视图转换成函数视图非常简单,只需调用类视图的 as_view() 方法即可(至于 as_view 方法究竟是如何将一个类转换成一个函数的目前不必关心,只需要在配置 URL 模式调用 as_view...(category=cate) 和 IndexView 不同的地方,我们覆写了父类的 get_queryset 方法。..., DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性的含义和 ListView 一样的

2.6K70

django 1.8 官方文档翻译: 3-4-2 内建显示视图

我们能够识别一些基础的任务,比如展示对象的列表,以及编写代码来展示任何对象的 列表。此外,有问题的模型可以作为一个额外的参数传递URLconf中。...比如,考虑每个publisher 详细页面上的图书列表的展示。DetailView通用视图提供了一个publisher对象给context,但是我们如何在模板中添加附加信息呢?...答案派生DetailView,并且在get_context_data方法中提供你自己的实现。...然而,model参数并不是唯一能够指明视图要基于哪个对象进行操作的方法 – 你同样可以使用queryset参数来指定一个对象列表: from django.views.generic import DetailView...相当方便的ListView 有一个get_queryset() 方法来供我们重写。在之前,它只是返回一个queryset属性值,但是现在我们可以添加更多的逻辑。

1.4K40

django 1.8 官方文档翻译: 1-2-4 编写你的第一个Django应用,第4部分

如果 choice 未在 POST 数据中提供 request.POST[‘choice’] 将抛出 KeyError 当未给定 choice 对象时上面的代码若检测到抛出的 KeyError 异常就会向...HttpResponseRedirect 对象需要一个参数:用户将被重定向的 URL (请继续看下去在这情况下我们如何构造 URL ) 。...该重定向 URL 会调用 ‘results’ 视图并显示最终页面。 正如在教程 第3部分提到的,request 一个 HttpRequest 对象。...想了解 HttpRequest 对象更多的内容,请参阅 request 和 response 文档 。 当有人投票后,vote() 视图会重定向投票结果页。...通常情况下,当你编写一个 Django 应用时,你会评估下通用视图是否适合解决你的问题, 如果适合你就应该从一开始就使用它,而不是进行一半才重构你的代码。

1.5K10

Django 官方推荐的姿势:类视图

对处理首页的视图函数来说,虽然其处理的对象一个文章,另一个帖子,但是其处理的过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...好在将类视图转换成函数视图非常简单,只需调用类视图的 as_view() 方法即可(至于 as_view 方法究竟是如何将一个类转换成一个函数的目前不必关心,只需要在配置 URL 模式调用 as_view...(category=cate) 和 IndexView 不同的地方,我们覆写了父类的 get_queryset 方法。...此外我们可以看到 CategoryView 类中指定的属性值和 IndexView 中一模一样的,所以如果为了进一步节省代码,甚至可以直接继承 IndexView: class CategoryView..., DetailView # 记得在顶部导入 DetailView class PostDetailView(DetailView): # 这些属性的含义和 ListView 一样的

1.3K20

Django 1.10中文文档-第一个应用Part4-表单和通用视图

return HttpResponseRedirect(reverse('polls:results', args=(p.id,))) 上面代码里有些东西需要解释: request.POST一个类似字典的对象...当对Question进行投票后,vote()视图将请求重定向Question的结果界面。...它首先从数据库中获取selected_choice对象,计算新的投票数值然后将其保写回数据库。如果您的网站的两位用户尝试在完全相同的时间投票,这可能会出错。这被称为竞争条件。...这里使用两个通用视图:ListViewDetailView。这两个视图分别代表“显示对象列表”和“显示特定类型对象的详细信息页面”的抽象概念。 每个通用视图需要知道它将作用于哪个模型。...然而,对于ListView,自动生成的上下文变量question_list。

2.3K40

django 入门:通用视图类重构视图

, DetailView from django.shortcuts import get_object_or_404 from blog.models import Post # 获取相应模型下的全部数据...类进行修改 # 基本属性同 HomeView 相同,也可以直接继承 HomeView 然后复写 get_queryset() 方法实现 class CategoryView(ListView):...(self): # 类视图中,从 url 捕获的命名组参数值保存在实例的 kwargs 中,一个字典 # 非命名组参数值保存在实例的 args 中,一个列表...form = CommentForm() return render(request, 'blog/detail.html', locals()) class PostDetailView(DetailView...详情界面 有时候如果我们的数据过多,同一页加载全部数据,用户的体验肯定不好,我们通过通用视图类来创建分页,这边为了方便显示,我们会设置每页加载一篇文章 3 通过 ListView 创建分页 1.指定

87620

drf之请求、响应、视图

Request对象的数据根据前端发送数据的格式进行解析之后的结果。不论前端发送的那种格式的数据,我们都可以使用统一的方式读取数据。...APIView与View的不同之处在于: 传入视图方法中的REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...get_serializer(self, *args, **kwargs) :返回序列化器对象,主要用来提供给Mixin扩展类使用,如果我们在视图中想要获取序列化器对象,也可以直接调用此方法。...方法: get_queryset(self) :返回视图使用的查询集,主要用来提供给Mixin扩展类使用,列表视图与详情视图获取数据的基础,默认返回queryset属性,可以重写 get_object...要传queryset对象,查询了所有的图书 # serializer_class使用哪个序列化类来序列化这堆数据 queryset = Book.objects # queryset

2.1K20

django 1.8 官方文档翻译: 3-4-5 内建基于类的视图的API

基础视图 View TemplateView RedirectView 通用的显示视图 DetailView ListView 通用的编辑视图 FormView CreateView UpdateView...BaseDateListView 基于类的通用视图 —— 索引 Simple generic views View TemplateView RedirectView Detail Views DetailView...(例如,self.foo = 3 线程安全的操作)。...这表示不应该使用列表、字典或其它可变对象作为视图的参数。如果你真这么做而且对共享的对象做过修改,某个用户的行为可能对后面访问同一个视图的用户产生影响。...大部分通常视图需要queryset 键 ,它是一个查询集 实例;关于查询集对象的更多信息,请参见执行查询。 译者:Django 文档协作翻译小组,原文:API reference。

84220
领券