一. 在urls.py文件添加URL和视图函数对应关系
# 用户管理
path('user/list/', views.user_list), # 用户列表
path('user/add/', views.user_add), # 添加
path('user/model/form/add/', views.user_model_form_add), # model_form版添加
path('user/<int:nid>/edit/', views.user_edit), # 改 <int:nid> = 向 depart/edit网站传址必须传一个id号 因为要把id对应行显示出来
path('user/<int:nid>/delete/', views.user_delete),# 删除
二. 在views.py文件写视图函数
def user_edit(request, nid):
""" 编辑用户 """
row_object = models.UserInfo.objects.filter(id=nid).first()
if request.method == "GET":
# 根据id去数据库获取要编辑的那行数据
# row_object = models.UserInfo.objects.filter(id=nid).first()
form = UserModelForm(instance=row_object)
return render(request, 'user_edit.html', {"form": form})
form = UserModelForm(data=request.POST, instance=row_object)
if form.is_valid():
# 默认保存的是用户输入的所有数据,如果要在用户输入以外增加一些值
# form.instance.字段名 = 值
form.save()
return redirect('/user/list/')
return render(request, 'user_edit.html', {"form": form})
def user_delete(request, nid):
""" 删除用户 """
models.UserInfo.objects.filter(id=nid).delete()
return redirect('/user/list/')
三. templates里写HTML文件
{% extends 'layout.html' %} <!-- 继承模板 -->
{% block content %} <!-- 模板替换内容 -->
<div class="container">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"> 编辑用户 </h3>
</div>
<div class="panel-body">
<form method="post" novalidate> <!-- 表单 -->
{% csrf_token %} <!-- 验证机制 -->
{% for field in form %} <!-- 循环取出字段 -->
<div class="form-group">
<label>{{ field.label }}</label>
{{ field }} <!-- 字段 -->
<span style="color: red;">{{ field.errors.0 }}</span> <!-- 提示错误 -->
</div>
{% endfor %} <!-- 结束循环 -->
<button type="submit" class="btn btn-primary">提 交</button> <!-- 添加表单按钮 -->
</form>
</div>
</div>
</div>
{% endblock %} <!-- 模板替换内容结束 -->
四.效果展示