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>

最新文章

  1. Oracle数据库操作知道
  2. javascrit原生实现jquery的append()函数
  3. EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(三)
  4. 第三次作业:caculator
  5. freeCodeCamp:Factorialize a Number
  6. [COCI]coci2015/2016 nekameleoni
  7. 给产品经理讲技术,不得不懂的TCP和UDP
  8. 使用XAMPP本地安装Wordpress博客
  9. lrzsz on linux
  10. Android MediaPlayer状态机
  11. 使用libcurl提交POST请求
  12. HDU 1159 Common Subsequence:LCS(最长公共子序列)
  13. JSTL与EL的区别
  14. Leetcode_53_Maximum Subarray
  15. 设置 sql_mode
  16. 数学运算比IF要快
  17. 抓包工具Fiddler的使用说明
  18. centos 7 安装redis 3.2.1
  19. fiddler 手机 https 抓包 以及一些fiddler无法解决的https问题http2、tcp、udp、websocket证书写死在app中无法抓包
  20. Python开发【第四篇】:模块

热门文章

  1. HDU 1008 电梯( 水题)
  2. linux 命令——22 find (转)
  3. POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
  4. bzoj1189 [HNOI2007]紧急疏散
  5. PAT (Basic Level) Practise (中文)- 1004. 成绩排名 (20)
  6. Luogu [P2708] 硬币翻转
  7. AngularJS 数组
  8. JQuery根据关键字检索html元素并筛选显示
  9. 第五篇:selenium调用IE问题(Protected Mode settings are not the same for all zones)
  10. 初学puppet