<form action="" method="post">
<p>姓名:<input type="text" name="name"></p>
<p>性别:
<select name="gender" id="">
<option value="男">男</option>
<option value="女">女</option>
<option value="中性">中性</option>
<option value="保密">保密</option>
</select>
</p>
<input type="submit" value="确认修改">
</form>
下一步,点击编辑按钮,可见编辑页面
在视图中判断
如果是get请求,就渲染 编辑页面
先写逻辑,再写详情
def edit_stu(request):
""" 编辑的逻辑 """
if request.method == "GET":
# 如果是get请求,代表用户在访问该页面
# 我们应该返回这个页面的样子
return render(request, "edit_stu.html")
else:
# 如果是post请求,代表着用户在提交数据
# 代表用户在修改数据
# 我们应该更新数据库
# 修改成功后,页面跳转
id = request.GET.get("id")
sql = "update student set k1=v1, k2=v2, kn=vn where id = {id}".format(id=id)
return redirect("/stu_list/")
模板的布局
、
由于在编辑页面上需要有原始数据的填充
可以利用模板语言,先占位置
然后从后端传递数据给前端
后端的数据来源
布局的时候给每一个编辑按钮,都布上get参数
每一个编辑按钮都对应上了当前用户的id值
可以考虑
在后端
利用id从数据库中查到用户的一整套数据
然后把这一整套数据,传递给前端
前端按需要填充内容
视图函数拿用户的数据
get请求时,一定带上了参数
后端在get分支里,直接拿
拿了查
查了返
模板语言判断性别如果学生的性别与option的value一致的时候
就让标签加上一个 selected 属性
{% if 条件 %}
代码
{% elif 条件2 %}
代码2
{% else %}
代码
{% endif %}
前端代码
<!DOCTYPE html>
<!--作者:pyhui-->
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ stu_dict }}
<form action="" method="post">
<p>姓名:<input type="text" name="name" value="{{ stu_dict.name }}"></p>
<p>性别:
<select name="gender" id="">
<option value="男" {% if stu_dict.gender == '男' %} selected {% endif %}>男</option>
<option value="女" {% if stu_dict.gender == '女' %} selected {% endif %}>女</option>
<option value="中性" {% if stu_dict.gender == '中性' %} selected {% endif %}>中性</option>
<option value="保密" {% if stu_dict.gender == '保密' %} selected {% endif %}>保密</option>
</select>
</p>
<input type="submit" value="确认修改">
</form>
</body>
</html>
完整代码
后端
def edit_stu(request):
""" 编辑的逻辑 """
if request.method == "GET":
# 如果是get请求,代表用户在访问该页面
# 我们应该返回这个页面的样子
# 获取用户的id号码
id = request.GET.get("id")
# 查询用户的信息
sql = "select * from student where id = %s" % id
print(sql)
stu_dict = db.select_one(sql)
print(stu_dict)
send_dict = {
"stu_dict": stu_dict
}
return render(request, "edit_stu.html", send_dict)
else:
# 如果是post请求,代表着用户在提交数据
# 代表用户在修改数据
# 我们应该更新数据库
# 修改成功后,页面跳转
get_data = request.GET
post_data = request.POST
print(get_data, post_data)
# 获取用户的POST数据
# 获取get传来的参数,取id
id = request.GET.get("id")
# 获取post传来的参数,取name和gender
name = request.POST.get("name")
gender = request.POST.get("gender")
# 数据库的操作
sql = "update student set name='{name}', gender='{gender}' where id = {id}".format(id=id, gender=gender, name=name)
print("执行的sql语句\n",sql)
db.commit_data(sql)
return redirect("/stu_list/")
编辑页面