主页 > 游戏开发  > 

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


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

2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。https://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,点击“查看详情”

即可查询出学生详情;

标签:

一周学会Django5PythonWeb开发-Django5详细视图DetailView由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“一周学会Django5PythonWeb开发-Django5详细视图DetailView