`

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-Blog:使用Django制作博客

    在本项目"Django-Blog:使用Django制作博客"中,我们将探讨如何利用Python的Web框架Django构建一个功能完备的个人或企业博客系统。Django以其“快速、易用且强大”的特性深受开发者喜爱,它能够帮助我们高效地开发...

    Python库 | django-summernote-0.5.9.tar.gz

    `django-summernote` 适用于需要用户输入格式化文本的场合,比如博客平台、CMS(内容管理系统)、论坛、在线教育平台等。它极大地提升了用户体验,使得非技术人员也能轻松编辑网站内容。 总的来说,`django-...

    Django-Blog

    Django管理静态文件(如CSS、JavaScript、图片等)和用户上传的媒体文件。在生产环境中,这些文件通常会被单独配置以提高性能。 10. **部署与服务器配置** 最后,将Django-Blog部署到生产环境,可能涉及到WSGI...

    PyPI 官网下载 | django-ckeditor-5-0.0.8.tar.gz

    CKEditor 5是一款强大的Web文本编辑器,提供丰富的文本格式化选项,如字体、颜色、样式、图片上传等,常用于网页内容编辑界面,让非技术用户也能轻松创建和编辑HTML内容。 **Django框架** Django是一个高级的、...

    django-ckeditor

    2. **图片和文件上传**:用户可以直接在编辑器中上传图片和文件,并能够对它们进行管理和引用。 3. **媒体库管理**:提供一个媒体库界面,用于查看和管理已上传的图片和文件,便于在多个地方重复使用。 4. **HTML ...

    Python库 | django-froala-editor-2.6.4.tar.gz

    - 图片上传和管理 - 链接插入和管理 - 代码编辑模式 - 多语言支持 - 插件扩展 - 响应式设计 通过`django-froala-editor`,这些功能可以直接无缝地融入到Django项目中。 **应用场景** 这个库广泛适用于需要用户...

    PyPI 官网下载 | django-user-media-1.1.1.tar.gz

    `django-user-media`适用于任何需要处理用户上传文件的Django应用,比如社交媒体平台、博客系统、电子商务网站或者内部文件分享平台。通过使用这个库,开发者可以专注于业务逻辑,而不必花费大量时间在文件管理和...

    PyPI 官网下载 | django-markdownx-2.0.24.tar.gz

    5. **图片上传**:集成图片上传功能,允许用户在Markdown文本中嵌入图片,并自动处理存储和URL生成。 6. **配置灵活**:允许开发者根据项目需求调整各种设置,如默认样式、上传路径等。 **使用场景** django-...

    PyPI 官网下载 | django-activity-stream-0.3.3.tar.gz

    - **社交网络**:记录并展示用户动态,如发表状态、上传照片等。 - **博客平台**:追踪文章的点赞、评论等互动行为。 - **电商应用**:记录用户的购买、收藏、评价等行为。 - **协作工具**:展示团队成员的更新、...

    PyPI 官网下载 | django-stdimage-4.0.1.tar.gz

    这个库的核心功能是提供一个自定义的`ImageField`,它允许开发者方便地进行图片上传、缩放、裁剪和其他图像操作,同时支持生成不同尺寸的版本,比如缩略图或预览图。这在构建需要处理大量图像的Web应用时尤其有用。 ...

    first-learn-django-blog

    【标题】"first-learn-django-blog"是一个初学者在学习Django框架时创建的博客应用练习项目。这个项目主要用于熟悉Django的基本操作和Web开发流程,使用的Python版本为3.6,而Django框架的版本是2.0.5。 【描述】...

    django-attachments

    这个应用在 Django 项目中扮演着重要角色,尤其对于那些需要处理大量文件上传和管理的场景,如博客、论坛或者文档管理系统等。`django-attachments` 提供了简洁的接口和灵活的配置选项,使得开发者能够快速集成到...

    django-photologue-master

    总的来说,Django Photologue是一个功能强大的图像管理工具,适合需要展示大量高质量图片的网站,如摄影博客、在线画廊或者任何需要精美呈现图像内容的平台。通过深入理解和充分利用其提供的功能,开发者能够构建出...

    django-ckeditor-master.zip

    CKEditor4是其最新稳定版,它具有丰富的特性集,包括图片上传、代码高亮、表格编辑、链接管理等,非常适合用于博客、论坛或者内容管理系统。 **安装与配置** 1. 首先,将`django-ckeditor-master`解压,然后通过pip...

    PyPI 官网下载 | django-cms-boilerplate-1.0beta1.tar.gz

    Django CMS 支持插件化,可以灵活扩展各种功能,如新闻、博客、产品目录等。 **Boilerplate** "Boilerplate" 在编程中通常指的是一个预配置的基础结构,包含了一个项目所需的基本文件和配置,旨在加速开发进程。...

    Django-CoolBlog:基于Django开发的个人博客系统

    Django-CoolBlog可能包含多个应用,比如`blog`,用于处理博客相关的逻辑。每个应用都有自己的模型、视图、模板和URL配置。 4. **模型(Model)** 在`blog/models.py`中,会定义博客系统所需的模型,例如`Post`...

    tinymce-django

    4. **媒体管理**:由于 TinyMCE 支持插入图片和其他媒体,所以还需要理解 Django 的媒体处理机制,包括上传路径的设置、静态文件的处理,以及可能需要的第三方库如 django-filebrowser 或 django-medialibrary 来...

    django-使用python+django开发的博客应用-项目实战.zip

    10. **静态文件与媒体文件**:静态文件(如CSS、JavaScript和图片)应放在`static`目录下,而用户上传的媒体文件(如文章的封面图片)则存储在`media`目录。配置`settings.py`以正确处理这些文件。 11. **部署**:...

    《Python Django快速入门》系列博客的项目源码-Django-Quick-Start.zip

    【Python Django快速入门】系列博客项目源码是一个适合初学者的教程资源,旨在帮助学习者快速掌握Django框架的基本概念和应用。这个压缩包包含了名为"Django-Quick-Start-master"的完整项目文件,让我们来深入探讨这...

    Django-Blog-App

    【Django-Blog-App】是一个基于Python的Web应用程序,使用了流行的Django框架来构建一个功能完善的博客系统。这个项目旨在提供一个平台,让用户能够创建、编辑和发布文章,同时支持评论、分类和标签等功能。Django因...

Global site tag (gtag.js) - Google Analytics