Django框架学习笔记(5.获取多个数据以及文件上传)

时间:2024-05-20 17:15:33

前篇做到了获取一个输入框的内容,不过,怎么获取多个数据,如checkbox里的,

如何上传一个文件呢?

这里做个简单的介绍:


1.创建Django工程,配置相关,创建app

urls.py修改如下:

from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', views.index),
    path('login/', views.login),
]


views.py:

from django.shortcuts import HttpResponse
from django.shortcuts import render
from django.shortcuts import redirect

# Create your views here.

def index(request):
    return HttpResponse("index")

def login(request):
    if request.method == "GET":
        return render(request, "login.html")
    elif request.method == "POST":
        v = request.POST.get("gender")
        f = request.POST.getlist("favor")

        import os
        obj = request.FILES.get("fff")
        file_path = os.path.join("upload", obj.name)
        f = open(file_path, mode="wb")
        for i in obj.chunks():
            f.write(i)
        f.close()

        return render(request, "login.html")
    else:
        return redirect(request, "/index/")

注意:这里创建了一个新的文件夹upload用于存放上传的文件

           v = request.POST.getlist("favor")这句将获取的多个数据存入列表


login.html内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
</head>
<body>
<form action="/login/" method="POST" enctype="multipart/form-data">
    <p>
        男:<input type="radio" name="gender" value="1"/>
        女:<input type="radio" name="gender" value="2"/>
    </p>
    <p>
        男:<input type="checkbox" name="favor" value="11"/>
        女:<input type="checkbox" name="favor" value="22"/>
    </p>
    <p>
        <input type="file" name="fff"/>
    </p>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

这里注意form的enctype属性,如果想上传文件,就要加上这条,其他用不到的内容


这里我随意上传一张图片:

Django框架学习笔记(5.获取多个数据以及文件上传)



发现upload文件夹下:



Django框架学习笔记(5.获取多个数据以及文件上传)


上传成功!