`

django-blog(七)上传图片

 
阅读更多

1、在settings.py中配置MEDIA_URL和MEDIA_ROOT

[root@localhost blogproject]# 

[root@localhost blogproject]# vim blogproject/settings.py

MEDIA_URL = '/uploads/'

MEDIA_ROOT = os.path.join(BASE_DIR,  'uploads')

 

2、urls.py中配置路由

django1.9及以下

url(r"^uploads/(?P<path>.*)$", \

                "django.views.static.serve", \

                {"document_root": settings.MEDIA_ROOT,}),

djaggo1.10及以上

from django.conf.urls.static import static

urlpatterns = [

    url(r'^admin/', admin.site.urls),

    url(r'^$',index,name='index'),

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

3、在model中设置图片的上传位置和路径

[root@localhost kindeditor-4.1.10]# cd /root/blogenv/blog_env/blogproject/static/js/kindeditor-4.1.10

[root@localhost kindeditor-4.1.10]# vim config.js 

KindEditor.ready(function(K) {

                window.editor = K.create('#id_content',

{

width : '900px',

height : '300px',

uploadJson: '/admin/upload/kindeditor',

}

);});

 

urls配置:

 

from django.conf.urls import url

from django.contrib import admin

from blog.views import *

from django.conf import settings

from blog.upload import upload_image

from django.conf.urls.static import static

urlpatterns = [

    url(r'^admin/', admin.site.urls),

    url(r'^$',index,name='index'),

    url(r'^admin/upload/(?P<dir_name>[^/]+)$', upload_image, name='upload_image'),

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

 

代码

[root@localhost blogproject]# vim blog/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}

 

 

 

 

分享到:
评论

相关推荐

    Django-v5.0.4.zip

    图片上传采用Python的Image类库,分页采用的是Paginator,其他的我就不一一列举出来了,请看源码! Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 一流的 URL 设计 设计者...

    DDTCMS 0.2.3.pre.20090808

    使用的photologue加了自动修改上传的图片名,采用时间和随机码 -------------------------------------------------------------------------------- ddtcms一些说明: 模板的css参考了聚友网...

    毕业设计个人博客系统python+django+mysql+redis多主题个人博客系统项目源码.zip

    毕业设计python+django+mysql+redis多主题个人博客系统项目源码。 功能点 ...markdown文章渲染,代码高亮,支持后台markdown编写文章等 ...支持图床,后台上传图片可直链访问及调用 simpleui后台管理

    基于python3.8 + django3.2.4 + mysql8的一个多主题个人博客系统源码.zip

    基于python3.8 + django3.2.4 + mysql8 + redis + uwsgi + nginx 的一个多主题个人博客系统 功能点 ...markdown文章渲染,代码高亮,支持后台markdown编写文章...支持图床,后台上传图片可直链访问及调用 simpleui后台管理

    Django博客系统(Python) 1.0

    Django博客系统(Python)的数据库与模型非Django自动生成,采用Python的web开发框架(Django)和Mysql数据库,数据库的设计很不规范,由于时间方面的问题(基于才“出道”时的原有博客数据库结构),图片上传采用Python的...

    基于Django框架的美食博客

    基于Django框架搭建的美食博客,有登录,发帖,评论,点赞,上传图片,个人主页等功能,数据库配置,前端代码都有

    Django博客系统.zip

    ## Django博客系统 ...时的原有博客数据库结构)图片上传采用Python的Image类库,分页采用的是Paginator,其他的我就不一一列举出来了,请看源码! Django 框架的核心组件有:用于创建模型的对象关系映射为最终用户设

    小程序图片上传至云服务器指定路径后端Django代码

    学生自己写的代码,非常杂乱,但有一定借鉴意义。 具体可以可以结合我的博客来看,有需要的话可以下载,非常不建议单独下载。

    百度Ueditor for Django

    本模块帮助在Django应用中集成百度Ueditor HTML编辑器。 安装包中已经集成Ueditor v1.2.2 ... **Django默认开启了CSRF中间件,因此如果你的表单没有加入{% csrf_token %},那么当您上传文件和图片时会失败

    基于Django和Bootstrap的博客网站设计源码

    该博客网站基于bootstrap+django+mysql搭建,集成了后台管理、数据可视化图表、基于markdown语法的博客、视频上传和个人项目展示与介绍等功能。网站设计简洁、快速、响应式,具有良好的可扩展性,适合新手入门和进阶...

    newBlog:简单的django博客

    博客网上地址: : 一个django开发的博客。网址 。 || 所有需要的第三方库都在site-packages文件夹中,可以...相册功能(图片上传uploadfy,上传至七牛云存储(七牛SDK),lazyload加载) 5.关于/简历单页。 6.命令行发

    clean_blog:基于Django开发的简洁博客系统

    ckeditor编辑器,图片上传 Bootstrap前端模板 RSS订阅 标签分类与日期压缩 文章评论 干草堆文章内容搜索 用法: 新建虚拟环境 git clone git@github.com:wzyonggege/clean_blog.git virtualenv --python= venv . ...

    Django博客系统源代码

    本博客的数据库与模型非Django自动生成,采用Python的web开发框架(Django)和Mysql数据库, 数据库的设计很不规范,由于时间方面的问题(基于才出道时的原有博客数据库结构) 图片上传采用Python的Image类库,分页采用的...

    mubapp:MUB是使用Python-Django基础结构的多用户博客网络应用

    {MUB:多用户博客} MUB是使用Python-Django基础结构的多用户博客网络应用。 它现在可以使用,但是,我计划在将来添加更多功能。 因此,如果您想被告知,则可以关注和/或为项目提供帮助。 你不喜欢读密码吗? 您也...

    基于Python3.6和Django2.2的多人博客源码.zip

    基于Python3.6和Django2.2的多人博客源码 项目介绍 多人博客(多用户,每个用户可以有自己的个人站点,编写自己的博客) 登录注册(登录有图片验证码,注册可以上传用户自定义头像) 登录注册用form组件进行校验和...

    DjangoBlog:python django 做的博客系统

    DjangoBlog Django 做的博客系统 实现的功能: 1.文章分类,归档,标签云 2.评论排行,点击率排行,最新文章,分页 3.用户注册,登陆 4.用户评论,需要用户在登陆状态,留言板,引用第三方评论多说 5.使用kingeditor...

    my_site:Django + Python + MySQL + Redis + Docker + Supervisor 搭建的个人博客

    当前项目所使用环境:Python3.6.8,Django3.1项目介绍1. 后端语言:Python + Django2.... 未使用Django-admin,自己手写的管理后台, 用于文章、友链和... 接入,文章中的图片通过接口上传到七牛云9. 添加过期提醒,文章

    Tale 博客系统七牛图片上传插件plugin_qiniu.zip

    【博客个人资源】 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、...

    Django实战(8)——在线人脸识别系统demo(对接Redis、初步实现人脸识别功能)

    接着上一篇Django实战(7)——在线人脸识别系统(第一步、实现图片上传和MySQL数据库的对接,ORM操作数据库)https://blog.csdn.net/qq_41938259/article/details/104562046写: 这是Github地址:...

Global site tag (gtag.js) - Google Analytics