Django文件上传【单个/多个图片上传】
准备工作
python:3.6.8 django:2.2.1
新建django项目
确定项目名称、使用的虚拟环境【当然这个也可以后期修改】、app的名称
创建成功,选择在新的窗口中打开
图片上传
修改配置文件DjangoFileUpload/settings.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') #media即为图片上传的根路径
添加表模型FileUpload/models.py
from django.db import models
class Img(models.Model):
img_url = models.ImageField(upload_to='photos/',blank=True,null=True) #指定图片上传路径,即media/photos/
数据迁移
python manage.py makemigrations
python manage.py migrate
(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload ? python manage.py makemigrations mosson@bogon
Migrations for 'fileUpload':
fileUpload/migrations/0001_initial.py
- Create model Img
(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload ? python manage.py migrate mosson@bogon
Operations to perform:
Apply all migrations: admin, auth, contenttypes, fileUpload, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying fileUpload.0001_initial... OK
Applying sessions.0001_initial... OK
(django_shop) ------------------------------------------------------------
~/Desktop/DjangoFileUpload ?
增加图片上传的路由 DjangoFileUpload/urls.py
from django.contrib import admin
from django.urls import path
from fileUpload import views
urlpatterns = [
path('admin/', admin.site.urls),
path(r'uploadImg/',views.uploadImg,name='uploadImg'),
]
增加图片上传的视图 views.py
from .models import Img
#图片上传
def uploadImg(request):
if request.method == 'POST':
img = Img(img_url=request.FILES.get('img'))
img.save()
return render(request, 'imgUpload.html')
新增页面templates/imgUpload.html
图片上传
项目启动
(django_shop) ------------------------------------------------------------ ~/Desktop/DjangoFileUpload ? python manage.py runserver 0.0.0.0:8008 mosson@bogon Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). June 20, 2019 - 07:58:37 Django version 2.2.1, using settings 'DjangoFileUpload.settings' Starting development server at http://0.0.0.0:8008/ Quit the server with CONTROL-C.
访问页面上传图片
到这里已经完成了。
===============================分割线 多图上传===============================
1 修改imgUpload.html
把 改成,就这一处而已,其他都不动
2 views.py
from DjangoFileUpload.settings import BASE_DIR
def uploadImg(request): files = request.FILES.getlist('img') for f in files: destination = open(BASE_DIR + '/media/photos/' + f.name,'wb+') #上传的文件都放到/media/photos/文件夹里 for chunk in f.chunks(): destination.write(chunk) destination.close() return render(request, 'imgUpload.html')
OK 多图上传已经完成
=======================码字不易,多多支持===================================