万里长征第二步——django个人博客(第七步 ——上传文件)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万里长征第二步——django个人博客(第七步 ——上传文件)相关的知识,希望对你有一定的参考价值。
- 在项目目录下新建一个 ‘uploads’文件夹以保存上传的文件
- 配置setting.py文件
MEDIA_URL = ‘/uploads/‘ MEDIA_ROOT = os.path.join(BASE_DIR, ‘uploads‘) #设置上传的绝对路径
- 配置urls.py文件,设置路由
from django.conf.urls import url,include from django.contrib import admin from django.conf import settings urlpatterns = [ url(r‘^uploads/(?P<path>.*)$‘,\ ‘django.views.static.serve‘, {‘document_root‘: settings.MEDIA_ROOT,}), url(r‘^admin/‘, admin.site.urls), url(r‘^todolist/‘,include(‘todolist.urls‘)), ]
- 为富文本编辑器设置上传文件
- 在APP目录下创建配置文件‘upload.py’
# -*- coding: utf-8 -*- from django.http import HttpResponse from django.conf import settings from django.views.decorators.csrf import csrf_exempt import os import uuid import json import datetime as dt @csrf_exempt def upload_image(request, dir_name): ################## # kindeditor图片上传返回数据格式说明: # {"error": 1, "message": "出错信息"} # {"error": 0, "url": "图片地址"} ################## result = {"error": 1, "message": "上传出错"} files = request.FILES.get("imgFile", None) if files: result =image_upload(files, dir_name) return HttpResponse(json.dumps(result), content_type="application/json") #目录创建 def upload_generation_dir(dir_name): today = dt.datetime.today() dir_name = dir_name + ‘/%d/%d/‘ %(today.year,today.month) if not os.path.exists(settings.MEDIA_ROOT + dir_name): os.makedirs(settings.MEDIA_ROOT + dir_name) return dir_name # 图片上传 def image_upload(files, dir_name): #允许上传文件类型 allow_suffix =[‘jpg‘, ‘png‘, ‘jpeg‘, ‘gif‘, ‘bmp‘] file_suffix = files.name.split(".")[-1] if file_suffix not in allow_suffix: return {"error": 1, "message": "图片格式不正确"} relative_path_file = upload_generation_dir(dir_name) path=os.path.join(settings.MEDIA_ROOT, relative_path_file) if not os.path.exists(path): #如果目录不存在创建目录 os.makedirs(path) file_name=str(uuid.uuid1())+"."+file_suffix path_file=os.path.join(path, file_name) file_url = settings.MEDIA_URL + relative_path_file + file_name open(path_file, ‘wb‘).write(files.file.read()) return {"error": 0, "url": file_url}
- 为富文本编辑器设置路由。urls.py
from django.conf.urls import url from django.contrib import admin from blog.views import index from django.conf import settings from blog.upload import upload_image urlpatterns = [ url(r‘^uploads/(?P<path>.*)$‘,‘django.views.static.serve‘, {‘document_root‘: settings.MEDIA_ROOT,}), url(r‘^admin/upload/(?P<dir_name>[^/]+)$‘, upload_image, name=‘upload_image‘), url(r‘^admin/‘, admin.site.urls), url(r‘^$‘, index, name=‘index‘) ]
- 配置KindEditor,在config.js文件中
KindEditor.ready(function(K) { K.create(‘textarea[name="content"]‘, { width : "800px", height : "200px", uploadJson: ‘/admin/upload/kindeditor‘, }); });
以上是关于万里长征第二步——django个人博客(第七步 ——上传文件)的主要内容,如果未能解决你的问题,请参考以下文章
万里长征第二步——django个人博客(第四步 ——创建数据库)
万里长征第二步——django个人博客(第五步 ——配置后台admin)