Django中文件的上传

项目整体目录结构


目录结构.png
  1. 在settings中配置STATICFILES_DIRS
STATIC_URL = '/static/'
# 设置静态文件存放的物理目录
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]

2.在settings中配置MEDIA_ROOT

# 设置文件上传路径
MEDIA_ROOT = os.path.join(BASE_DIR,'static/media')

3.在TEMPLATES中创建上传文件页面




    
    上传文件


    
{% csrf_token %}

注意:form标签的属性中添加 enctype="multipart/form-data" ,否则后台获取file为空
4.在url中配置处理函数的路径

from django.conf.urls import url
from django.contrib import admin
from django.urls import path
from bookstore import views

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^show',views.show),
    url(r'^upload',views.upload_handle)
]

5.在views中处理上传逻辑:

from django.conf import settings
from django.http import HttpResponse
from django.shortcuts import render,redirect

def show(request):
    if request.method =="GET":
        return render(request,'upload.html')

def upload_handle(request):
    """
    处理上传图片
    :param request:
    :return:
    """
    # 1.获取上传的文件
    file = request.FILES.get('myFile')
    # 创建一个文件
    save_path = '%s/%s'%(settings.MEDIA_ROOT,file.name)
    # 2.获取上传文件内容并写入到创建的文件中
    with open(save_path,'wb') as f:
        for content in file.chunks():
            f.write(content)

    # 写入到数据库保存上传记录
    
    # 返回
    return HttpResponse("上传成功")

测试效果 http://127.0.0.1:8000/show

测试上传页面.png

文件上传成功.png

返回页.png

你可能感兴趣的:(Django中文件的上传)