锋哥原创的Python Web开发 Django5视频教程:
2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计31条视频,包括:2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~、第2讲 Django5安装、第3讲 Django5创建项目(用命令方式)等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV14Z421z78C/视图类UpdateView是在视图类FormView和视图类DetailView的基础上实现的,它首先使用视图类 DetailView的功能(功能核心类是SingleObjectMixin),通过路由变量查询数据表某条数据并显示在网页上,然后在视图类FormView的基础上,通过表单方式实现数据修改。
views.py里新建Update类:
class Update(UpdateView):# 设置模版文件template_name = 'student/update.html'# 设置模型外的数据extra_context = {'title': '学生信息编辑'}# 设置查询模型model = StudentInfo# 指定formform_class = StudentForm# 执行成功后跳转地址success_url = '/student/list'
student下新建update.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{{ title }}</title><style>.inputClass {width: 200px;}</style>
</head>
<body>
<h3>{{ title }}</h3>
<form method="post">{% csrf_token %}{{ form.as_p }}<input type="submit" value="确定">
</form>
</body>
</html>
urls.py里加一个映射:
path('student/update/<int:pk>', helloWorld.views.Update.as_view()),
list.html里加一个
<a href="/student/update/{{ student.id }}">修改</a>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{{ title }}</title>
</head>
<body>
<h3>{{ title }}</h3>
<a href="/student/create">新增学生</a>
<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><a href="/student/update/{{ 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
我们修改,数据:
点击确定提交,则django给我们做了数据库修改操作,然后准发到列表页面。是不是非常的方便。