最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

django入门11:django form表单提交

扩展 太平洋学习网 浏览 评论

 Django form表单提交是必须要学会的,比如用户注册,修改,添加都是通过form表单提交的,以修改user用户为例,过程如下:

从用户列表跳转到---修改页面---修改页面显示要修改的数据---修改好之后form提交到数据库保存---保存成功之后跳转到用户列表,效果如图所示。

GIF.gif

这里只做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查询用户。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/kuozhan/2017/0926/245.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论