文件上传必须以Post的方式进行提交,表单<form>中的文件上传时候必须带有enctype="multipart/form-data"时候 才会包含文件内容数据。
表单单重使用<input type="file" name="xxx">进行上传文件
试图函数中,用request.FILES取文件框里的内容
file=request.FILES['xxx']key对应页面file框中的name的值配置文件的访问路径和存储路径,在setting.py中设置MEDIA相关配置,Django把用户上传的 资源统称为media资源。
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')MEDIA_URL和MEDIA_ROOT需要手动绑定
# 在主路由当中
from django.contrib import admin
from django.urls import path,include
from index import views as index_views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('user/',include('user.urls')),
path('note/',include('note.urls')),
path('index/',index_views.index_views)
]
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)等价于做了MEDIA_URL开头的路由,Django接到请求MEDIA_URL后去MEDIA_ROOT查找资源
字段:FileField(upload='子目录名')
# 先创建一个模型类
from django.db import models
class Upload_info(models.Model):
filename = models.CharField(verbose_name="文件名称",max_length=11)
picture = models.FileField(upload_to='files')# 上传文件的视图函数
def upload_views(request):
if request.method == 'GET':
return render(request,'user/upload.html')
elif request.method == 'POST':
# 取上传文件的名字
title = request.POST['title']
up_file = request.FILES['file']
Upload_info.objects.create(title=title,picture=up_file)
return HttpResponse("文件上传成功")