博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
运用Django、MySQL、HTML、JS、Ajax模拟开发博客系统(6)
阅读量:5819 次
发布时间:2019-06-18

本文共 5619 字,大约阅读时间需要 18 分钟。

hot3.png

做上传图片的功能之前,要明白files的方法

      文件对象: request.FILES.get()     # 获取上传的文件对象

      文件对象.name              # 就是文件名       

      文件对象.size             # 就是文件字节

      文件对象.chunks()           # 这个方法里面存放了上传的文件内容

      form 表单里面要添加一个特殊的参数  enctype="multipart/form-data" # 文件的传输配置

在a.html内添加一个表单,代码如下

  • 155822_Qhe3_3764483.png

在BlogA下的urls配置路径

  • 155914_TWR5_3764483.png

在BlogA下的views添加函数

  •     160053_CGfM_3764483.png

在blog中新建一个file文件夹

  • 160238_D5AT_3764483.png
  • 160246_F0C1_3764483.png

现在我们可以做上传功能了

  • 160443_9EuU_3764483.png
  • 160449_fO5r_3764483.png

富文本编辑功能

首先下载富文本编辑器并解压

下载链接:  http://ueditor.baidu.com/website/download.html#ueditor

 

  • 161233_TabP_3764483.png

在static下新建一个名为ueditor的文件夹,并将解压后的ueditor里的文件全部复制粘贴到ueditor文件夹中

  • 161814_Hb5O_3764483.png

将unditor/jsp/config.json文件复制粘贴到跟目录下

  • 163526_ezPD_3764483.png
  • 163532_SaYV_3764483.png

在blog下新建一个uecontroller.py,写入以下代码

  • from django.shortcuts import render , redirect , reverse , HttpResponseimport jsonimport reconfigStr = ""with open('config.json','r',encoding="utf-8") as jf:     for line in jf:         configStr += re.sub(r"/\*(.*)\*/","",line)print('configStr---',configStr)config = json.loads(configStr)print('config===',config)from django.http import HttpResponseimport codecsimport jsonimport osfrom django.views.decorators.csrf import csrf_exemptimport randomfrom datetime import *import blog.settings as settings#ROOT = os.path.dirname(__file__)ROOT = settings.BASE_DIR#本地上传图片时构造json返回值class JsonResult(object):    def __init__(self,state="未知错误",url="",title="",original="",error="null"):        super(JsonResult,self).__init__()        self.state = state        self.url = url        self.title = title        self.original = original        self.error = error#构造返回jsondef buildJsonResult(result):    jsondata = {"state":result.state,"url":result.url,"title":result.title,"original":result.original,"error":result.error}    return json.dumps(jsondata)def buildFileName(filename):    dt = datetime.now()    name,ext = os.path.splitext(filename)    return dt.strftime("%Y%m%d%M%H%S{0}{1}".format(random.randint(1,999999),ext))#读取json文件def getConfigContent():    return config#上传配置类class UploadConfig(object):    def __init__(self,PathFormat,UploadFieldName,SizeLimit,AllowExtensions,SavePath,Base64,Base64Filename):        super(UploadConfig,self).__init__()        self.PathFormat = PathFormat        self.UploadFieldName = UploadFieldName        self.SizeLimit = SizeLimit        self.AllowExtensions = AllowExtensions        self.SavePath = SavePath        self.Base64 = Base64        self.Base64Filename = Base64Filename#获取json配置中的某属性值def GetConfigValue(key):    config = getConfigContent()    return config[key]#检查文件扩展名是否在允许的扩展名内def CheckFileType(filename,AllowExtensions):    exts = list(AllowExtensions)    name,ext = os.path.splitext(filename)    return ext in extsdef CheckFileSize(filesize,SizeLimit):    return filesize
    =size: break jsondata = {"state":"SUCCESS","list":filelist,"start":start,"size":size,"total":index} return HttpResponse(json.dumps(jsondata))#返回配置信息def configHandler(request): content = getConfigContent() callback = request.GET.get("callback") if callback: return HttpResponse("{0}{1}".format(callback,json.dumps(content))) return HttpResponse(json.dumps(content))#图片上传控制@csrf_exemptdef uploadimageHandler(request): AllowExtensions = GetConfigValue("imageAllowFiles") PathFormat = GetConfigValue("imagePathFormat") SizeLimit = GetConfigValue("imageMaxSize") UploadFieldName = GetConfigValue("imageFieldName") SavePath = GetConfigValue("imageUrlPrefix") upconfig = UploadConfig(PathFormat,UploadFieldName,SizeLimit,AllowExtensions,SavePath,False,'') return uploadFile(request,upconfig)def uploadvideoHandler(request): AllowExtensions = GetConfigValue("videoAllowFiles") PathFormat = GetConfigValue("videoPathFormat") SizeLimit = GetConfigValue("videoMaxSize") UploadFieldName = GetConfigValue("videoFieldName") SavePath = GetConfigValue("videoUrlPrefix") upconfig = UploadConfig(PathFormat,UploadFieldName,SizeLimit,AllowExtensions,SavePath,False,'') return uploadFile(request,upconfig)def uploadfileHandler(request): AllowExtensions = GetConfigValue("fileAllowFiles") PathFormat = GetConfigValue("filePathFormat") SizeLimit = GetConfigValue("fileMaxSize") UploadFieldName = GetConfigValue("fileFieldName") SavePath = GetConfigValue("fileUrlPrefix") upconfig = UploadConfig(PathFormat,UploadFieldName,SizeLimit,AllowExtensions,SavePath,False,'') return uploadFile(request,upconfig)#在线图片def listimageHandler(request): imageManagerListPath = GetConfigValue("imageManagerListPath") imageManagerAllowFiles = GetConfigValue("imageManagerAllowFiles") imagelistsize = GetConfigValue("imageManagerListSize") return listFileManage(request,imageManagerListPath,imageManagerAllowFiles,imagelistsize)#在线文件def ListFileManagerHander(request): fileManagerListPath = GetConfigValue("fileManagerListPath") fileManagerAllowFiles = GetConfigValue("fileManagerAllowFiles") filelistsize = GetConfigValue("fileManagerListSize") return listFileManage(request,fileManagerListPath,fileManagerAllowFiles,filelistsize)actions = { "config":configHandler, "uploadimage":uploadimageHandler, "uploadvideo":uploadvideoHandler, "uploadfile":uploadfileHandler, "listimage":listimageHandler, "listfile":ListFileManagerHander}@csrf_exemptdef handler(request): action = request.GET.get("action") return actions.get(action)(request)

ueditor/_examples/submitFormDemo.html里有各种表单样式,我们选取其中的提交表单的Demo,打开看一下源代码

将其中的script代码拿过来粘贴到fabu.html中并进行修改:

  • 165735_x1eu_3764483.png
  • 165827_BlZQ_3764483.png
  • 171854_ikjf_3764483.png

将ueditor/server/editor_api.js中baseURL修改成我们的路径

  • 172934_YoRV_3764483.png

修改blog下urls.py

  • 174714_8Jof_3764483.png

由于小步骤太多,直接上传修改完成后的fabu.html代码

  •     
    Title

    欢迎{
    { user.username }}发布博客...

    {
    { msg }}
    {% csrf_token %}

    标题:

    内容:

操作完成后我们刷新网页

  • 180145_jmb5_3764483.png

如有错误之处,欢迎评论指出

 

 

转载于:https://my.oschina.net/u/3764483/blog/1811650

你可能感兴趣的文章
Nginx负载均衡、ssl原理、生成ssl密钥对、Nginx配置ssl
查看>>
从Excel导出SQL
查看>>
难忘战斗岁月————PMP认证考试总结
查看>>
apache性能测试工具ab使用详解
查看>>
SAP产品介绍
查看>>
zabbix_agentd被监控端安装
查看>>
[非凡程序员]协议,代理
查看>>
正则表达式(一)
查看>>
网络基础回顾1
查看>>
word无法显示图片
查看>>
python modelform的组合使用
查看>>
我的友情链接
查看>>
网络配置、进程优先、日志文件简介
查看>>
我的友情链接
查看>>
整数和实数的机内表示,精度和溢出
查看>>
亲测,很实用的10个Linux 系统诊断命令
查看>>
Zabbix3.0 图像中文显示乱码之解决方案
查看>>
oracle中用户问题
查看>>
浅谈网络中的IP地址
查看>>
我的友情链接
查看>>