当前位置: 首页 > news >正文

一周学会Django5 Python Web开发-Django5详细视图DetailView

锋哥原创的Python Web开发 Django5视频教程:

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV14Z421z78C/DetailView多用于展示某一个具体数据对象的详细信息的页面。

使用DetailView,你只需要指定要使用的模型和对象的唯一标识符,并可以自定义其他一些属性,例如模型名称、模板名称、上下文数据等。

以下是DetailView的一些常见属性和方法:

  • model:指定要使用的模型。

  • queryset:指定要使用的查询集,用于获取对象。如果未指定,则将使用模型的默认查询集。

  • pk_url_kwarg:指定URL中用于获取对象的唯一标识符的参数名称,默认为’pk’。

  • context_object_name:指定将对象传递给模板时的上下文变量名称,默认为’model’。

  • template_name:指定要使用的模板的名称。

  • get_object(queryset=None):获取要展示的对象。可以重写这个方法来自定义获取对象的逻辑。

  • get_context_data(kwargs):返回要传递给模板的上下文数据。你可以重写这个方法来自定义上下文数据。

  • get():处理GET请求的方法,根据配置的对象获取规则执行对象获取和展示逻辑。

  • dispatch(request, *args, **kwargs):处理请求的入口方法,根据请求的不同方法(GET、POST等)执行相应的处理逻辑。

通过继承DetailView,并根据自己的需求重写这些方法,你可以创建自定义的展示单个对象详细信息的视图,并实现你想要的功能。

总之,DetailView是Django框架中的一个便捷的通用视图,用于展示单个对象的详细信息,并提供了一些有用的属性和方法来简化对象展示逻辑。

通过重新设置model属性来指定需要获取的Model类,默认对象名称为object,也可以通过重新设置context_object_name属性来更改这个名字。

下面我们通过实例来体验下吧:

views.py里新建Detail,继承DetailView

class Detail(DetailView):# 设置模版文件template_name = 'student/detail.html'# 设置模型外的数据extra_context = {'title': '学生信息详情'}# 设置查询模型model = StudentInfo# 设置上下文对象名称context_object_name = 'student'# 指定URL中用于获取对象的唯一标识符的参数名称,默认为’pk’。# pk_url_kwarg = 'id'

templates下的student目录下新建detail.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{{ title }}</title>
</head>
<body>
<h3>{{ title }}</h3>
编号:{{ student.id }}<br/>
姓名:{{ student.name }}<br/>
年龄:{{ student.age }}
</body>
</html>

urls.py里加一个映射:

    path('student/<int:pk>', helloWorld.views.Detail.as_view()),

list.html里,加一个操作项-查看详情:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{{ title }}</title>
</head>
<body>
<h3>{{ title }}</h3>
<table border="1"><tr><th>编号</th><th>姓名</th><th>年龄</th><th>操作</th></tr>{% for student in student_list %}<tr><td>{{ student.id }}</td><td>{{ student.name }}</td><td>{{ student.age }}</td><td><a href="/student/{{ student.id }}">查看详情</a></td></tr>{% endfor %}
</table>
<br>
{% if is_paginated %}{% if page_obj.has_previous %}<a href="/student/list?page={{ page_obj.previous_page_number }}">上一页</a>{% endif %}{% for current in paginator.page_range %}{% if current == page_obj.number %}<a href="/student/list?page={{ current }}"><b><font color="blue">{{ current }}</font></b></a>{% else %}<a href="/student/list?page={{ current }}">{{ current }}</a>{% endif %}{% endfor %}{% if page_obj.has_next %}<a href="/student/list?page={{ page_obj.next_page_number }}">下一页</a>{% endif %}
{% endif %}
</body>
</html>

运行测试,浏览器输入:http://127.0.0.1:8000/student/list,点击“查看详情”

即可查询出学生详情;

相关文章:

  • 飞桨(PaddlePaddle)数据预处理教程
  • 全量知识系统问题及SmartChat给出的答复 之9 三套工具之4语法解析器 之2
  • Android 14后台服务永久保活的技术方法
  • selenium爬取空气质量数据
  • 鸿蒙NEXT开发实战:【视频文件裁剪】
  • ccf 相邻数对解题思路
  • 线性dp P4310-绝世好题/P4933 大师【日记】
  • 机顶盒显示驱动芯片:SM74HC595D的功能与应用
  • unity-unity2d基础操作笔记(三)0.5.000
  • 随想录算法训练营第五十一天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
  • 05_Mongooes
  • 「一本通 6.4 例 3」Sumdiv
  • C++_程序流程结构_跳转语句_continue
  • ORA-24247:network access denied by access control list (ACL) 的处理方法
  • 【C++】类与对象(上篇)
  • php的引用
  • .pyc 想到的一些问题
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • C++11: atomic 头文件
  • nginx 配置多 域名 + 多 https
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PHP 7 修改了什么呢 -- 2
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • windows下mongoDB的环境配置
  • 笨办法学C 练习34:动态数组
  • 程序员该如何有效的找工作?
  • 项目管理碎碎念系列之一:干系人管理
  • 终端用户监控:真实用户监控还是模拟监控?
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #pragam once 和 #ifndef 预编译头
  • (3)nginx 配置(nginx.conf)
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (汇总)os模块以及shutil模块对文件的操作
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (译)2019年前端性能优化清单 — 下篇
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)c++ std::pair 与 std::make
  • (转)为C# Windows服务添加安装程序
  • **PHP分步表单提交思路(分页表单提交)
  • .bat文件调用java类的main方法
  • .gitignore文件---让git自动忽略指定文件
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • /var/log/cvslog 太大
  • @Bean, @Component, @Configuration简析
  • @在php中起什么作用?
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用