首页
学习
活动
专区
圈层
工具
发布

基于类的通用视图:ListView 和 DetailView

对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的。首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...指定获取的模型列表数据保存的变量名。这个变量会被传递给模板。...这个方法返回的值是一个字典,这个字典就是模板变量字典,最终会被传递给模板。...最终传递给浏览器的 HTTP 响应就是 get 方法返回的 HttpResponse 对象。 还是无法理解么?在不涉及源码的情况下我也只能讲这么多了。...此外,这里是 Django 官方文档对类视图的讲解,尽管我觉得这部分文档对类视图也讲得不是很清楚,不过也值得作为参考吧 基于类的视图概述。

3.6K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

    对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...template_name:指定这个视图渲染的模板。 context_object_name:指定获取的模型列表数据保存的变量名,这个变量会被传递给模板。...DetailView 除了从数据库中获取模型列表的数据外,从数据库获取模型的一条记录数据也是常见的需求。比如查看某篇文章的详情,就是从数据库中获取这篇文章的记录然后渲染模板。...最终传递给浏览器的 HTTP 响应就是 get 方法返回的 HttpResponse 对象。 还是无法理解么?在不涉及源码的情况下我也只能讲这么多了。...此外,这里是 django 官方文档对类视图的讲解,尽管我觉得这部分文档对类视图也讲得不是很清楚,不过也值得作为参考吧 基于类的视图概述[3]。

    1.9K20

    Django相关知识点回顾

    数据 # 演示获取json数据 # /json/ # flask: request.json def json_data(request): req_data = request.body #...>' # 设置响应头 8.2响应时返回json数据 # 演示响应时返回json数据 # /get_json/ # flask: jsonify # Django: JsonResponse(...all 无 查询模型类对应表格中的所有数据 QuerySet(查询集) get 查询条件 查询满足条件一条且只能有一条数据 模型类对象,查不到会报错DoesNotExist filter 查询条件 返回满足条件的所有数据...QuerySet(查询集) exclude 查询条件 返回不满足条件的所有数据 QuerySet(查询集) order_by 排序字段 对查询结果进行排序 QuerySet(查询集) aggregate...注意:对于QuerySet类的对象,可以继续调用之前所讲任何一个查询函数。

    11.3K51

    Django内置的通用类视图及实例

    属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...属性: model: 视图要显示的模型 queryset: 表示对象的一个查询集.queryset的值优先于model的值. template_name: 字符串表示的模板名称. context_object_name...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...get_context_data(**kwargs):返回显示对象的上下文数据. 4.CreateView ? 显示用于创建对象的表单的视图,通过验证错误信息重新显示视图,并且保存对象....context_object_name = 'employee_detail' #指定获取的模型列表数据保存的变量名。这个变量会被传递给模板。

    4.3K40

    Django实践-07日志调试,Django-Debug-Toolbar配置与sql优化

    Django静态文件问题备注: 参考: Django测试开发-20-settings.py中templates配置,使得APP下的模板以及根目录下的模板均可生效 解决django 多个APP时 static...5xx响应被视为错误消息;4xx响应被记录为警告消息;其他一切都被记录为INFO django.template - 与模板渲染相关的日志消息 django.db.backends - 有与数据库交互产生的日志消息...StaticFiles 静态文件加载情况 Templates 模板的相关信息 Cache 缓存的使用情况 Signals Django内置的信号信息 Logging 被记录的日志信息 SQL 向数据库发送的...在使用Django的ORM框架时可以基于如下方法: 对于多对一关联(如投票应用中的老师和学科),我们可以使用QuerySet的用select_related()方法来加载关联对象; 而对于多对多关联...('good_count'), bad=Avg('bad_count')) 可见,Django的ORM框架允许我们用面向对象的方式完成关系数据库中的分组和聚合查询。

    1.2K10

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

    属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤的对象列表,将取代model提供的值 context_object_name: 指定要在上下文中使用的变量的名称...属性: model: 视图要显示的模型 queryset: 表示对象的一个查询集.queryset的值优先于model的值. template_name: 字符串表示的模板名称. context_object_name...方法: get_queryset():返回用来获取本视图显示对象的queryset.如果设置了queryset属性,get_queryset()默认返回它的值. get_object(queryset=...None):返回该视图要显示的单个对象.如果提供了queryset,该queryset将作为对象的查询源,否则,将使用get_queryset().get_object()从视图的所有参数中查找pk_url_kwarg...context_object_name = 'employee_detail' #指定获取的模型列表数据保存的变量名。这个变量会被传递给模板。

    4.5K10

    Django实践-03模型-01表生成模型+学科页面与教师页面编写

    : Django测试开发-20-settings.py中templates配置,使得APP下的模板以及根目录下的模板均可生效 解决django 多个APP时 static文件的问题 Django MTV...基于数据库生成实体类 Django框架提供了ORM来解决数据持久化问题,ORM翻译成中文叫“对象关系映射”。...(3, 7)) # QuerySet []> 查询单个对象。...说明2:ORM查询多个对象时会返回QuerySet对象,QuerySet使用了惰性查询,即在创建QuerySet对象的过程中不涉及任何数据库活动,等真正用到对象时(对QuerySet求值)才向数据库发送...说明3:如果希望更新多条数据,不用先逐一获取模型对象再修改对象属性,可以直接使用QuerySet对象的update()方法一次性更新多条数据。

    50120

    Django实战-信息资讯-切片加载与搜索

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。...前端需要实现这些功能,往往需要数据最好是 json 格式,所以后端从数据库序列化数据。...-> [NewsObject,News()] 对象 values()可以将Queryset 转换成列表 # 并且将Queryset的模型对象(比如News()对象) 转换为字典 , 再转换成列表...# print(type(newses)) # 序列化表单字段 if category_id == 0: # 如果category_id = 0 , 说明没有传category_id...③ 搜索 from django.db.models import Q Q 对象 (django.db.models.Q) 可以对关键字参数进行封装,从而更好地应用多个查询。

    97440

    Django实践-09前后端分离开发入门

    Django静态文件问题备注: 参考: Django测试开发-20-settings.py中templates配置,使得APP下的模板以及根目录下的模板均可生效 解决django 多个APP时 static...上面的代码中,我们通过循环遍历查询学科得到的QuerySet对象,将每个学科的数据处理成一个字典,在将字典保存在名为subjects的列表容器中,最后利用JsonResponse完成对列表的序列化,向浏览器返回...JSON格式的数据。...={‘ensure_ascii’:False}参数 添加 json_dumps_params={‘ensure_ascii’:False} 参数 6.基于bpmappers简化对象转字典操作...为此我们可以使用一个名为bpmappers的三方库来简化将对象转成字典的操作,这个三方库本身也提供了对Django框架的支持。 安装三方库bpmappers。

    65510

    37.Django1.11.6文档

    模型作为它的第一个参数,任意数量的关键字参数作为它的第二个参数,它会将这些关键字参数传递给模型管理器中的get() 函数。...如果该参数是一个模板变量,传递给我们的函数是当前变量的值,不是变量本身。...实例化、处理和渲染表单 在Django 中渲染一个对象时,我们通常: 在视图中获得它(例如,从数据库中获取) 将它传递给模板的context 使用模板变量将它扩展为HTML 标记 除了几个关键点不同之外...然而,传递给身份验证后端的用户对象可能是django.contrib.auth.models.AnonymousUser 对象,该对象允许后端指定匿名用户自定义的授权行为。 ...会话序列化 默认情况下,Django使用JSON序列化会话数据。 您可以使用SESSION_SERIALIZER设置自定义会话序列化格式。

    26.6K80

    django之路由分组,反向解析,有名

    P\d+)/',views.test) 会将加了括号的正则表达式匹配的内容当做关键字参数传递给后面的视图函数 关键字就是你尖括号里面的名字(year) 具体操作如下: ? ? ?...只要不混着用,有名分组和无名分组支持多个相同类型的传参  反向解析: 试想一个场景,你有200多个a标签,href都指向index/,有一天在urls里面index改为了new_index,那么你只能手动改变...django2.0转换器(了解) 1.0版本的url和2.0版本的re_path分组出来的数据都是字符串类型 默认有五个转换器,感兴趣的自己可以课下去试一下   str...必会三板斧   1.HttpResponse >>> 返回字符串   2.render >>> 支持模板语法,渲染页面,并返回给前端   3.redirect >>> 重定向...(即可以重定向到别人的网址,也可以重定向到自己路由) django返回的数据都是HttpResponse对象 JsonResponse(返回json格式的数据) FBV与CBV

    2K10

    后端框架学习-Django

    ,则将数据按照关键字传参的方式传递给视图函数 path(‘page/int:page‘,views.xxx) 转换器: str:匹配除了’/‘之外的非空字符串 int:int匹配0或任何正整数...参数=值&参数=值"\> + form表单中的method为get GET请求方法中,如果有数据需要传递给服务器,通常会使用查询字符串传递。...Django 同样支持方法的串联,以下方法在返回QuerySet后均可使用方法串联,且最终都会按照SQL顺序对数据库进行操作。 print(QuerySet.query)将取得实际的SQL语句。...查(get())->改:通过对象.属性的方式更改->保存:对象.save() 2.批量更新数据 直接调用QuerySet的update(属性=值实现批量修改) 针对QuerySet来做更改 删除操作...1.单个数据删除 查找对应的数据对象 调用该数据对象的delete()方法实现删除 2.批量数据删除 查找QuerySet 调用delete()方法实现删除 3.伪删除操作 通过在表里添加一个布尔型字段

    12.1K40

    【Python全栈100天学习笔记】Day46 导入导出Excel报表和配置日志

    for teacher in queryset] # 返回JSON格式的数据 return JsonResponse({'names': names, 'good': good, 'bad...5xx响应被视为错误消息;4xx响应被记录为警告消息;其他一切都被记录为INFO django.template - 与模板渲染相关的日志消息 django.db.backends - 有与数据库交互产生的日志消息...StaticFiles 静态文件加载情况 Templates 模板的相关信息 Cache 缓存的使用情况 Signals Django内置的信号信息 Logging 被记录的日志信息 SQL 向数据库发送的...'good_count'), bad=Avg('bad_count')) 这里获得的QuerySet中的元素是字典对象,每个字典中有三组键值对,分别是代表学科编号的subject、代表好评数的good和代表差评数的...good=Avg('good_count'), bad=Avg('bad_count')) 可见,Django的ORM框架允许我们用面向对象的方式完成关系数据库中的分组和聚合查询。

    1.2K20

    【Django】聚合在Django的详细解析以及运用在企业级项目里的方法

    聚合 Django数据库抽象API描述了使用Django查询来添加、删除、查询和修改单个对象的方法。然而,有时需要根据一组对象聚合您想要获得的值。...第一种方法是从整个QuerySet生成摘要值。例如,想计算所有在售图书的平均价格。Django的查询语法提供了一种描述所有藏书的方法。 传递给聚合()的参数描述了要计算的聚合值。...2 # Interrogate the second object in the queryset >>> q[1] Django Projects> >>> q[1...应用于公共模型字段的任何过滤器()(或exclude())都将具有约束被认为是聚合的对象的效果。 当使用annotate()子句时,过滤器具有约束注释对象计算的效果。...很难直观地理解ORM如何将复杂的查询集转换为SQL查询。因此,如果有疑问,请使用str(queryset.query)`检查SQL并编写大量测试。

    2.7K40
    领券