Django form表单提交是必须要学会的,比如用户注册,修改,添加都是通过form表单提交的,以修改user用户为例,过程如下:
从用户列表跳转到---修改页面---修改页面显示要修改的数据---修改好之后form提交到数据库保存---保存成功之后跳转到用户列表,效果如图所示。

这里只做django form表单提交部分,先看看form表单的代码,如下。
第一步:添加一个修改用户的form表单,用户数据已经根据用户id查询出来了,这里直接通过{{ user.xxx }} 这样取值即可,根据id查询数据的方法在django入门10中有类似的方法,只是转发到用户详情页面了而已。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户信息修改</title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
</head>
<body>
<form action="{% url 'edit_submit' %}" method="post">
{% csrf_token %}
<input type="hidden" name="id" value="{{ user.id }}">
用户名:<input type="text" name="username" value="{{ user.username }}"><br>
密码:<input type="text" name="password" value="{{ user.password }}"><br>
<input type="submit" value="提交修改">
</form>
</body>
</html>注意这里,django form表单“必须”要在form里面加入防跨站保护标签,否则提交标签会失败,如下。
{% csrf_token %}第二步:根据action="{% url 'edit_submit' %}" 请求中的name='edit_submit' 到blog/urls.py里面寻找对应的处理方法,如下。
from django.conf.urls import url from .import views urlpatterns = [ # form表单提交url url(r'^user/edit_submit/$', views.edit_submit, name='edit_submit'), ]
第三步:在blog/views.py里面把修改的数据提交到sqlite数据库中,代码如下。
#form表单提交方法
def edit_submit(request):
# 获取页面传过来的数据
userid = request.POST.get('id')
name = request.POST.get('username')
pwd = request.POST.get('password')
# 根据user id查找数据该方法会根据User这个model自动找到对应的user表,
# instance是user对象,可以随便取名,并不是关键字
instance = User.objects.get(id=userid)
//把页面中获取到的用户名和密码设置到instance这个user对象中
instance.username = name
instance.password = pwd
# 保存数据
User.save(instance)
#这是调用下面跳转到用户列表的方法
return user_list(request)
# 跳转到用户列表
def user_list(request):
lists = User.objects.all()
return render(request, 'user/user_list.html', {'users': lists})保存数据是一样的,只是不需要从数据库中根据id查询用户。