Django 前端向后台post提交数据

Django里面,通过Html页面提交的数据,可以通过在View里面定义的函数通过request参数获取。简单的说,主要可以分出3种情况。

  1. HTML页面传递来的单个数据, 比如radiobox或者text 可以通过request.POST.get获取
  2. HTML页面传递来多个数据,比如checkbox或者option, 可以通过request.POST.getlist获取
  3. HTML页面上传了一个文件,html端需要表明enctype,表示这是一个文件而不是字符串;后台需要通过request.FILES.get获取这个文件的地址,然后通过chunk分块写入指定的地址

现在来看看实例:

HTML页面

upload.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/upload/" method="POST" enctype="multipart/form-data">
        <p>
            <input type="text" name="user" placeholder="用户名" />
        </p>
        <p>
            <input type="password" name="pwd" placeholder="密码" />
        </p>
        <p>
            性别:
            男<input type="radio"  name="gender" value="1"/>
            女<input type="radio" name="gender" value="2"/>
            中<input type="radio" name="gender" value="3"/>
        </p>
        <p>
            爱好:
            音乐<input type="checkbox"  name="favor" value="11"/>
            武术<input type="checkbox" name="favor" value="22"/>
            电玩<input type="checkbox" name="favor" value="33"/>
        </p>
        <p>
            <select name="city" multiple>
                <option value="sh">上海</option>
                <option value="bj">北京</option>
                <option value="tj">天津</option>
            </select>
        </p>
        <p>
            <input type="file" name="fafafa" enctype="multpart/form-data"/>
        </p>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

视图函数

view.py

def upload(request):
    if request.method == "GET":
        return render(request, ‘upload.html‘)
    elif request.method == "POST":
        v=request.POST.get(‘user‘)
        print(v)
        # radio
        v = request.POST.get(‘gender‘)
        print(v)
        v = request.POST.getlist(‘favor‘)
        print(v)
        v = request.POST.getlist(‘city‘)
        print(v)
        obj = request.FILES.get(‘fafafa‘)
        print(obj, type(obj), obj.name)
        import os
        file_path = os.path.join(‘upload‘, obj.name)
        print(file_path)
        f = open(file_path, mode="wb")
        for i in obj.chunks():
            f.write(i)
        f.close()
        from django.core.files.uploadedfile import InMemoryUploadedFile
        return render(request, ‘upload.html‘)
    else:
        # PUT,DELETE,HEAD,OPTION...
        return redirect(‘/upload/‘)

界面

输入下面的值进行提交

成功获取结果

System check identified no issues (0 silenced).
July 06, 2017 - 15:25:56
Django version 1.11, using settings ‘Django.settings‘
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
阿拉丁
2
[‘22‘, ‘33‘]
[‘bj‘, ‘tj‘]
statements.pdf <class ‘django.core.files.uploadedfile.InMemoryUploadedFile‘> statements.pdf
upload\statements.pdf
[06/Jul/2017 15:26:10] "POST /upload/ HTTP/1.1" 200 1267

确认成功上传文件

时间: 2024-08-05 06:32:49

Django 前端向后台post提交数据的相关文章

jsp form表单提交,后台接收提交数据的三种方式

1.使用getParameter("name") 2.定义相同变量名 3.使用模型类

ajax使用json数组------前端往后台发送json数组及后台往前端发送json数组

1.引子 Json是跨语言数据交流的中间语言,它以键/值对的方式表示数据,这种简单明了的数据类型能被大部分编程语言理解.它也因此是前后端数据交流的主要方式和基础. 2.前端往后台传输json数据 第一步,先应该定义一个JSON对象或JSON数组.json对象是“var jsonObj={“name1”:“value1” , “name2”:“value2” , “name3”:“value3”,…};”的格式定义,而json数组则是以中括号"[ ]"包裹多个json对象的格式定义,如

servlet自动获取前端页面提交数据

servlet自动获取前端页面jsp提交数据 以下是本人在学习过程中,因前端页面提交参数过多,后台servlet封装实体类过于麻烦而写的一个工具类,应用于jsp/servlet数据提交后,基于MVC+MyBatis进行数据持久化的过程.这里只介绍页面到servlet(controller)提交数据封装对象的过程,MVC+MyBatis访问数据库不在这里介绍. 1.前端页面及代码 1)前端表单页面构建(用于测试简单构建的页面有点丑陋哦~) 2)前端jsp页面代码   这里使用了Ajax异步 get

Django—Form两种保留用户提交数据的方法

用户在网页上进行表单填写时,有可能出现某项填写错误.一般情况下,用户在未发觉错误的情况下点击提交,则此表单的内容会清空,用户不得不再重新填写,这样的用户体验是及其糟糕的. 在此,我们有2种方法将用户的输入保存下来,一旦填写错误,只需要将错误项修改即可重新提交. 一.利用Form生成Html标签 1. views.py 1 from django.shortcuts import render, HttpResponse, redirect 2 from django.forms import F

利用ajax的方式来提交数据到后台数据库及交互功能

怎么样用ajax来提交数据到后台数据库,并完成交互呢????? 一.当我们在验证表单的时候,为了阻止把错误的也发送到服务器,我们通常这样设置:     $(function(){       var isusername;(定一个变量)        var ispwd;         $('form').submit(function(e){             if(!isusername || !ispwd){                 e.preventDefault();(

springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码

本人刚开始接触springmvc,项目搭建参照https://my.oschina.net/gaussik/blog/385697.在用IDEA写登录注册的时候,想通过ajax方式提交数据到后台,然后遇到如题所述的乱码问题,然后度娘了好多,终于解决了.废话不多说,直接上代码. 首先是登录页面login.jsp 1 <%-- 2 Created by IntelliJ IDEA. 3 User: PENG027 4 Date: 2016/11/11 5 Time: 15:48 6 To chang

通过AngularJS实现前端与后台的数据对接(一)

最近,笔者在做一个项目:使用AngularJS,从而实现前端与后台的数据对接.笔者这是第一次做前端与后台的数据对接的工作,因此遇到了许多问题.笔者在这些问题中,总结了一些如何实现前端与后台的数据对接的方法,希望与大家分享. 在开始进行前端与后台的数据对接前,首先要做到以下几点: 1.先要了解页面哪里是需要后台提供数据的(即:哪里是需要接接口的) ps:很明显,表格里的数据就是要向后台发送请求,从数据库里获取页面需要显示的数据 2.要理解接口里的每一个字段的含义 ps:一般而言,前端工作者都可以根

Ajax 提交表单或提交数据到后台时没有提交值(后台接收不到值)

function markMeg(idsStr){ alert(idsStr); $.tips("正在提交数据,请稍后...",30); $.ajax({ type: "POST", dataType: "json", url:"my/message/mark", data: {"ids":idsStr}, success: function (data) { if(data["doResult&

解决部分浏览器ajax提交数据,数据已改变,却后台数据接收数据还是上一次值的问题

最近在工作中遇到了QQ浏览器ajax提交数据,表单数据改变,却后台数据接收数据还是上一次值的问题,但是在其它浏览器中是正常的. 代码如下: $.ajax({ url : "<%=path%>/secretkey/uploadKey", async:false, type : 'post', data : { merKey : $('#merKey').val(), keyType : $('#keyType').val(), type : $('#type').val()