万里长征第二步——django个人博客(第七步 ——上传文件)

  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‘,
         });
      });
时间: 2024-10-13 16:37:34

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

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

在models.py内设置数据库模型 # -*- coding=utf-8 -*- from __future__ import unicode_literals from django.db import models from django.contrib.auth.models import AbstractBaseUser # Create your models here. # 用户模型. #第一种:采用的继承方式扩展用户信息(本系统采用) #扩展:关联的方式去扩展用户信息 class

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

在urls.py文件中配置admin路径 from django.conf.urls import url from django.contrib import admin from blog.views import index urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$', index, name='index') ] 将需要在后台显示的数据库配置在admin.py文件中 from django.contrib imp

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

定义日志记录器 可以在setting.py里设置日志记录器 # 自定义日志输出信息 LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(module)s:%(funcName)s] [%(levelname)s]- %(

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

下载kindeditor 在admin.py文件中配置链接 class Media: js = ( '/static/js/kindeditor-4.1.10/kindeditor-min.js', #引入主文件 '/static/js/kindeditor-4.1.10/lang/zh_CN.js', #引入中文文件 '/static/js/kindeditor-4.1.10/config.js', #引入配置文件 ) 在kindeditor根目录下创建配置文件config.js,,并配置 K

Django 系列博客(七)

Django 系列博客(七) 前言 本篇博客介绍 Django 中的视图层中的相关参数,HttpRequest 对象.HttpResponse 对象.JsonResponse,以及视图层的两种响应方式 CBV 和 FBV,还有简单的文件上传. 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以.无论视图本身包含什么逻辑,都要返回

使用django表单,使网页添加上传文件,并分析文件。

开发环境是: apache + python + django+ eclipse(开发环境) 欲达到目的: 在网页上,添加上传文件控件.然后读取csv文件,并分析csv文件. 操作步骤: django 是MVC的设计模式 (模型M,视图V,控制器C) 1.从django的基本模型中,构建自己的模型. 在myforms.py文件中添加如下代码,之后在html显示的表单数据就可以采用这个模型的数据了. from django import forms from django.views.decora

博客第一篇_Xcode6_iOS_APP上传失败总结

Xcode6_iOS_APP上传失败总结 最近刚刚完成工程,上传的时候遇到一些麻烦,在这里分享给大家,希望对遇到同样问题的有些帮助. 我遇到的是这样的,工程调试完成,打包后,用xcode6自带的Application Loader上传时,首先遇到的是 Error Description not available 上传N多次都是这个错误 截图如下: 调试多次未果,初步人为是网络问题,结果回到家任然上传不成功,同样的问题. 翻翻博客,有人提到FQ后上传成功.于是打开FQ,上传,开始了.传输过程遇到

PHP阿里云OSS,七牛云 上传文件

来源:http://my.oschina.net/rain21/blog/477019 七牛云 PHPSDK下载:http://pan.baidu.com/s/1o69TGcM 7.X版本: DEMO: <?php require_once './vendor/autoload.php';   use Qiniu\Auth; use Qiniu\Storage\BucketManager; use Qiniu\Storage\UploadManager;   $accessKey = 'acce

Django 编写博客网站的用户管理部分(采用自有的 django.contrib.auth) 2. 登陆登出和用户信息管理

续前Django 编写博客网站的用户管理部分(采用自有的 django.contrib.auth) 1. 注册部分 项目工具:Python 2.7.11  Django 1.10.2  Bootstrap 3.3.0   IDE:eclipse Pydev 1. 由于Django自带auth, 故仅需编写登录登出的url和template即可 urls常见上篇 template代码如下仅供参考: login 1 {% extends "account_base.html" %} 2 3