1. 在项目目录下新建一个 ‘uploads’文件夹以保存上传的文件
  2. 配置setting.py文件
    MEDIA_URL = '/uploads/'
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')  #设置上传的绝对路径
  3. 配置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')),
    ]
  4. 为富文本编辑器设置上传文件
    1. 在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}
    2. 为富文本编辑器设置路由。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')
      ]
    3. 配置KindEditor,在config.js文件中
      KindEditor.ready(function(K) {
      K.create('textarea[name="content"]', {
      width : "800px",
      height : "200px",
      uploadJson: '/admin/upload/kindeditor',
      });
      });

万里长征第二步——django个人博客(第七步 ——上传文件)的更多相关文章

  1. 万里长征第二步——django个人博客(第一步 ——创建主页)

    运行命令行工具,输入:pip install virtualenv  --安装virtualenv库. virtualenv blog_project_venv ——使用virtualenv创建一个虚 ...

  2. 万里长征第二步——django个人博客(第三步 —— 设置一些全局变量)

    可以将一些全局变量设置在settingg.py里 #网站的基本信息配置 SITE_NAME = 'John的个人博客' SITE_DESC = '专注学习Python开发,欢迎和大家交流' WEIBO ...

  3. django中博客后台将图片上传作为用户头像

    添加上传目录 # 如果不添加上传目录,仍然可以上传成功,默认为project目录,如果models.py定义了upload_to="目录名称",则会上传到"project ...

  4. 万里长征第二步——django个人博客(第五步 ——配置后台admin)

    在urls.py文件中配置admin路径 from django.conf.urls import url from django.contrib import admin from blog.vie ...

  5. 万里长征第二步——django个人博客(第四步 ——创建数据库)

    在models.py内设置数据库模型 # -*- coding=utf-8 -*- from __future__ import unicode_literals from django.db imp ...

  6. 万里长征第二步——django个人博客(第二步 ——日志记录器)

    定义日志记录器 可以在setting.py里设置日志记录器 # 自定义日志输出信息 LOGGING = { 'version': 1, 'disable_existing_loggers': True ...

  7. 万里长征第二步——django个人博客(第六步 ——添加富文本编辑器)

    下载kindeditor 在admin.py文件中配置链接 class Media: js = ( '/static/js/kindeditor-4.1.10/kindeditor-min.js', ...

  8. Django 系列博客(七)

    Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 ...

  9. 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(三):设置上传文件夹权限(这里测试用完全共享)

    基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...

随机推荐

  1. IE中部分版本的浏览器对Select标签设置innerHTML无效的问题

    这样写的代码:document.getElementById('data_list').innerHTML = data;//data是ajax返回的数据 结果发现在ie10的兼容模式下面下拉框没有内 ...

  2. 机器学习方法(八):随机采样方法整理(MCMC、Gibbs Sampling等)

    转载请注明出处:Bin的专栏,http://blog.csdn.net/xbinworld 本文是对参考资料中多篇关于sampling的内容进行总结+搬运,方便以后自己翻阅.其实参考资料中的资料写的比 ...

  3. Efficient Graph-Based Image Segmentation

    转:http://blog.csdn.net/asongoficeandfire/article/details/8434799 Efficient Graph-Based Image Segment ...

  4. 怎么WordPress增加在线投稿功能

    现在很多个人博客为了增加博客的内容,都会提供投稿通道,大部分都是以邮箱的形式进行投稿,不过这样一来,也很费人力,要拷贝复制,然后编辑等.如果给博客加个在线投稿功能,那就方便多了.稍微审核下文章内容就可 ...

  5. 正对开源工作的源码管理web (ssh协议管理) 本地如何使用SourceTree 管理

    入口: 如何产生公钥与私钥 ,以及开源中国 gitweb sshkey 的管理web 地址: 点击 “头像” ,然后再头像下面的列表选择 “ SSH Key Settings” . 接下来,完成跟着步 ...

  6. python 自定义过滤器

    文件目录结构: 新建文件并且命名为“templatetags” , 然后复制 __init__.py文件,拷贝到templatetags文件夹里, __pycache__文件夹可以忽略哈,那是程序运行 ...

  7. ExtJs之列表常用CRUD

    前端代码: Ext.onReady(function(){ Ext.define('Person', { extend: 'Ext.data.Model', fields: [{name: 'id', ...

  8. Linux命令之sort

    sort [选项] [文件] 对文本文件的行进行排序.常见的字符排序空字符串<数字<a<A<b<B...<z<Z (1).常用选项 -b,--ignore-l ...

  9. CentOS7网络自动连接

    1)在root用户下使用命令"vim /etc/sysconfig/network-scripts/ifcfg-XXX",其中"ifcfg-XXX"的" ...

  10. 04、Unity 5--全局光照技术

    本文整理自Unity全球官方网站,原文:UNITY 5 - LIGHTING AND RENDERING 简介全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常 ...