zoukankan      html  css  js  c++  java
  • Django Ajax学习二之文件上传

    基于Django实现文件上传

    1. url路由配置

    路径:C:UserssuperyDesktopday82demo_ajaxdemo_ajaxurls.py

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^upload/', views.upload),
    ]
    

    2. 视图函数代码

    def upload(request):
        if request.method=="POST":
            print("POST", request.POST)
            print("FILES",request.FILES)  # FILES <MultiValueDict: {}>
    
            file_obj=request.FILES.get("avatar")
            print(file_obj.name,"-----")
            with open(file_obj.name,"wb") as f:
                for i in file_obj:
                    f.write(i)
    
            return HttpResponse("成功")
        return render(request,"upload.html")
    

    3. 静态文件

    路径:C:UserssuperyDesktopday82demo_ajax emplatesupload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Title</title>
    </head>
    <body>
    
    <form action="/upload/" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <p>用户名<input type="text" name="user"></p>
        <p>头像<input type="file" name="avatar"></p>
        <input type="submit">
    </form>
    
    </body>
    </html>
    

    基于Ajax实现上传文件

    1. 路由规则

    from django.conf.urls import url
    from django.contrib import admin
    from app01 import views
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/', views.index),
        url(r'^get_ajax/', views.get_ajax),
        url(r'^upload/', views.upload),
    ]
    

      

    2. 视图函数

    def index(request):
        return render(request," index_formdata.html")
    

    3. 静态文件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Title</title>
        <style>
            .login_error{
                color: red;
            }
        </style>
    </head>
    <body>
    
    {% csrf_token %}
    
    
    
    <form action="" id="s1">
        <p>姓名<input type="text"></p>
        <p>密码<input type="password"></p>
        <p>头像<input type="file" id="upload_avatar"></p>
    </form>
    
    <p><button class="Ajax_send">Ajax_send</button><span class="login_error"></span></p>
    
    
    
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js "></script>
    {#<script src="/static/index.js"></script>#}
    <script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>
    
    <script>
         function foo() {
            $(".login_error").html("")
        }
        $(".Ajax_send").click(function () {
    
            var formData=new FormData();
            formData.append("username",$(":text").val());
            formData.append("password",$(":password").val());
            formData.append("avatar",$("#upload_avatar")[0].files[0]);
            // ajax请求
            $.ajax({
                url:"/get_ajax/",
                type:"POST",
                headers:{"X-CSRFToken":$.cookie('csrftoken')},
                data:formData,
                contentType:false,
                processData:false,
                success:function (data) {
                    var data=JSON.parse(data);
                    console.log(data);
                    console.log(typeof data);
                    // $(".error").html(data)
    
                    if(!data["flag"]){
                        $(".login_error").html("用户名或者密码错误");
                        setTimeout(foo,3000)
                    }
    
    
                }
            })
    
    
    
        })
    </script>
    
    </body>
    </html>
    

    4. get_ajax代码

    def get_ajax(request):
    
        username=request.POST.get("username")
        password=request.POST.get("password")
        print("FIFLE",request.FILES)           # 上传文件对象
        print("POST",request.POST)
        response={"flag":False}
        if username=="yuan" and password=="123":
            response["flag"]=True
        import json
        return HttpResponse(json.dumps(response))
    

      

      

      

      

      

      

      

  • 相关阅读:
    css3动画之1--animation小例子
    炎炎夏日,走入美妙的前端设计案例
    模拟腾讯、携程、百度音乐 移动端图片切换第一版
    仿QQ空间长图效果简易版--母亲节感恩
    001-搭建框架
    javascript事件绑定1-模拟jquery可爱的东西
    图片尺寸
    mvc3结合spring.net-依赖注入
    *创建索引初步
    Lucene的分词_中文分词器介绍
  • 原文地址:https://www.cnblogs.com/supery007/p/7834200.html
Copyright © 2011-2022 走看看