django基于mysql实现图片上传与打开

1:在models.py文件中建立数据表

 from django.db import models

 class User(models.Model):
       img = models.ImageField(upload_to=‘img‘,null=True)

  因为我是后来添加的图片字段,所以需要在里面加个null=True,至于Upload_to是文件板寸的路径

2:配置setting.py

TEMPLATES = [
    {
        ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
        ‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)]
        ,
        ‘APP_DIRS‘: True,
        ‘OPTIONS‘: {
            ‘context_processors‘: [
                ‘django.template.context_processors.media‘,#这个一定要有
                ‘django.template.context_processors.debug‘,
                ‘django.template.context_processors.request‘,
                ‘django.contrib.auth.context_processors.auth‘,
                ‘django.contrib.messages.context_processors.messages‘,

            ],
        },
    },
]

  这个就像配置static差不多,我原本是把MEDIA_URL写成‘/media/‘的,不过读取图片的时候找不到  改成‘Blog/media/‘就可以了   Blog是我的项目名

MEDIA_ROOT = os.path.join(BASE_DIR, ‘media‘)
#设置静态文件路径为主目录下的media文件夹
MEDIA_URL = ‘Blog/media/‘
#url映射

  3:执行

    python manage.py makemigrations 生成偏移文件

    python manage.py migrate 生成数据库文件

  4:templates下的模板文件

  (1)upload.html

 <form method="POST" enctype="multipart/form-data" >
    {% csrf_token %}
    <input type="file" name="img">
    <button type="submit">上传</button>
首先需要一个form,enctype="multipart/form-data" method="post" 是必须要填写的,表示数据不经过编码,直接上传。{%csrf_token%}也是post时,django强制要求的。
(2)showing.html
{% for image in imgs %}
        {% if image.img %}
{#            这种方式也可以打开图片<img src="{{ MEDIA_URL }}{{ image.img }}" />#}
            <img src="{{ image.img.url }}" />
        {% endif %}
    {% endfor %}

  5:配置urls

 url(r‘^upload‘, views.uploadImg),
 url(r‘^show‘, views.showImg,name=‘showimg‘),

  6:views.py

# 上传图片
def uploadImg(request):
    if request.method == ‘POST‘:
        new_img = Loginon(
            img=request.FILES.get(‘img‘)
        )
        new_img.save()
    return render(request, ‘img_tem/uploadimg.html‘)
# 显示图片
def showImg(request):
    imgs = Loginon.objects.all()
    content = {
        ‘imgs‘:imgs,
    }
    return render(request, ‘img_tem/showimg.html‘, content)

  

 

原文地址:https://www.cnblogs.com/wts-home/p/9653056.html

时间: 2024-11-13 10:00:10

django基于mysql实现图片上传与打开的相关文章

django 基于form表单上传文件和基于ajax上传文件

一.基于form表单上传文件 1.html里是有一个input type="file" 和 'submit'的标签 2.vies.py def fileupload(request): if request.method == 'POST': print(request.POST) print(request.FILES) # from django.core.files.uploadedfile import InMemoryUploadedFile print(type(reque

django中tinymce添加图片上传功能

主要参考以下: https://pixabay.com/en/blog/posts/direct-image-uploads-in-tinymce-4-42/ http://blog.csdn.net/tianlanzhixie/article/details/50240071 这里还有个用php使用的,可以参考http://zhaoda.net/tinymce-upload/example.html 大体思路就是 添加js的一个函数,这个是tinymec自带的 file_picker_call

基于Jcrop的图片上传裁剪加预览

1.页面结构 <div class="container"> <div class="row"> <div class="span12"> <div class="jc-demo-box"> <input type="file" id="fileChange" /> <div class="prew"

基于layUI的图片上传前预览功能的2种实现方式

上传页面采用了layui 的上传模块,要实现的功能:选择文件后---点击文件名,页面中间弹窗内预览图片,先看效果图: 预览功能的实现具体有2种方式:第一种是用blob+FileReader,第二种是layUI自带的. 1. 用layUI 自带的参数实现图片预览: layui.use('upload', function(){ ... choose: function(obj){ var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列

python - django 使用ajax将图片上传到服务器并渲染到前端

一.前端代码 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <script> // 创建一个表单对象(用于存储要发送的data数据) form_data = new FormData; // 参数1:后端请求时要获取的参数, 参数

jquery 图片上传本地预览V1.2

基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari 代码进行小小的压缩 如果看源码 自己解压就行了 版本已升级  修复jquery版本问题  支持任意jquery版本 代码在线演示地址:http://jquery.decadework.com/ 插件下载地址:http://jquery.decadework.com/plugin/uploadPreview.zip 标签: <无> 代码片段(3)[全屏查看所有代码] 1. [代码]uploadPrev

图片上传webuploader

/** * 基于jquery的图片上传控件 */!function ($) { "use strict"; //定义上传事件 var upImgEvent = { fileQueued: 'fileQueued',//文件加载的时候触发 //statusChange: 'statuschange', uploadSuccess: 'uploadSuccess',//文件上传成功触发默认路径应该是固定的 uploadError: 'uploadError',//文件上传报错触发 erro

jQuery图片上传前先在本地预览

/**名称:图片上传本地预览插件 v1.1*作者:周祥*时间:2013年11月26日*介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari*插件网站:http://keleyi.com/keleyi/phtml/image/16.htm*参数说明: Img:图片ID;Width:预览宽度;Height:预览高度;ImgType:支持文件类型;Callback:选择文件显示图片后回调方法;*使用方法: <div><img id="I

jQuery图片上传前先在本地预览(不经过后端处理)

前段时间遇到一个问题,前端想实现图片上传预览(不经过后端PHP或JAVA处理),用户点击file按钮上传文件,点击确定马上就能看到预览的效果,但在实现的时候无论怎样都取不到file上图片的真实路径,得到的反而是C:\fakepath\a.jpg,这个路径是错误的.百度之后得到说浏览器基于保护用户的相关安全措施,隐藏了上传的真实路径,用fakepath代替,当然,调整浏览器的相关安全设置可以解决这个问题.但我们不可能让所有用户都通过设置浏览器的安全设置来进行图片上传,这种方法在网络交互上显然不现实