django简单上传文件

这里使用django简单上传文件,不使用Form表单

  • 前端页面


<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Titletitle>
head>
<body>
<form method="post" action="" enctype="multipart/form-data">
  {% csrf_token %}
  <input type="file" name="file">
  <input type="submit" value="submit">
form>
body>
html>

传文件一定要指定 form标签的属性enctype为 multipart/form-data

  • 后端接收

1.settings文件

先设置接收文件的路径

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

2.models文件

模型字段可以选择ImageField或者FileField,模型字段参数upload_to为上传路径
例如 **%Y/%m/%d/**将会自动存放到 **/media/年/月/日/**文件夹下

from django.db import models

# Create your models here.

class MyFile(models.Model):
    image = models.ImageField(upload_to='%Y/%m/%d/')

3.views文件

通过**request.FILES.get(‘表单字段名’)**获取文件对象,表单字段名必须跟html的input标签属性name一致,否则会获取不到文件对象

from django.shortcuts import render
from .models import MyFile

# Create your views here.
def testUpload(request):
    if request.method == 'GET':
        return render(request, 'fileUpload_demo/upload.html')
    elif request.method == 'POST':
        print type(request.FILES.get('file'))
        file_ = MyFile(image=request.FILES.get('file'))
        file_.save()
        return render(request, 'fileUpload_demo/upload.html')

4. 通过浏览器直接访问

到第三步,已经可以使用页面上传文件了,如果希望浏览器直接访问文件,可以在urls.py设置访问路径

from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static


urlpatterns = [
    ......
] 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

加上最后一步可以在浏览器直接访问文件


大家有问题可以微信交流一下~~

你可能感兴趣的:(python,django)