[oldboy-django][2深入django]班级管理(Form)--编辑
2024-09-23 17:58:16
1.需求:编辑班级,难点:点击编辑按钮后,页面如何显示 待编辑 班级的信息(用Form实现), 以及Url 设置
2 url
url(r'^edit_class/nid=(?P<nid>\d+)$', views.edit_class),
3 class_list.html里面设置编辑a标签
<a href="/app01/edit_class/nid={{ item.id }}" class="glyphicon glyphicon-pencil">编辑</a>|
# 注意, href必须和url匹配
详细如下
<table class="table table-striped table-bordered table-hover table-condensed">
<thead>
<tr>
<th>班级ID</th>
<th>班级名称</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in class_list %}
<tr>
<td>{{ item.id }}</td>
<td>{{ item.title }}</td>
<td>
<a href="/app01/edit_class/nid={{ item.id }}" class="glyphicon glyphicon-pencil">编辑</a>|
<a href="/app01/del_class/nid={{ item.id }}" class="glyphicon glyphicon-trash">删除</a>
</td>
{#点击删除是一个get请求,要想告诉服务器id,可以通过url get请求获取,或者url匹配到传递给视图#}
</tr>
{% endfor %} </tbody>
</table>
4 视图
def edit_class(request, nid):
if request.method == "GET":
current_class = models.Classes.objects.filter(id=nid).first()
# current_class不能直接传给ClassForm, 必须是字典
obj = ClassForm(initial={'title': current_class.title})
# 初始值显示不会验证数据
# obj = ClassForm(data={'title': current_class.title})
# 不仅会显示数据,而且会进行数据检验
return render(request, 'app01_edit_class.html', {'nid':nid, 'obj': obj}) else:
obj = ClassForm(data=request.POST)
if obj.is_valid():
# 更新数据库数据
models.Classes.objects.filter(id=nid).update(**obj.cleaned_data)
return redirect('/app01/classes')
else:
return render(request, 'app01_edit_class.html', {'nid':nid, 'obj': obj})
5 模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h4>编辑班级</h4>
<form action="/app01/edit_class/nid={{ nid }}" method="POST">
{% csrf_token %}
{{ obj.title }} {{ obj.errors.title.0 }}
<p><input type="submit" value="提交"></p>
</form> </body>
</html>
最新文章
- Oracle数据库操作知道
- javascrit原生实现jquery的append()函数
- EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(三)
- 第三次作业:caculator
- freeCodeCamp:Factorialize a Number
- [COCI]coci2015/2016 nekameleoni
- 给产品经理讲技术,不得不懂的TCP和UDP
- 使用XAMPP本地安装Wordpress博客
- lrzsz on linux
- Android MediaPlayer状态机
- 使用libcurl提交POST请求
- HDU 1159 Common Subsequence:LCS(最长公共子序列)
- JSTL与EL的区别
- Leetcode_53_Maximum Subarray
- 设置 sql_mode
- 数学运算比IF要快
- 抓包工具Fiddler的使用说明
- centos 7 安装redis 3.2.1
- fiddler 手机 https 抓包 以及一些fiddler无法解决的https问题http2、tcp、udp、websocket证书写死在app中无法抓包
- Python开发【第四篇】:模块
热门文章
- HDU 1008 电梯( 水题)
- linux 命令——22 find (转)
- POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
- bzoj1189 [HNOI2007]紧急疏散
- PAT (Basic Level) Practise (中文)- 1004. 成绩排名 (20)
- Luogu [P2708] 硬币翻转
- AngularJS 数组
- JQuery根据关键字检索html元素并筛选显示
- 第五篇:selenium调用IE问题(Protected Mode settings are not the same for all zones)
- 初学puppet