zoukankan      html  css  js  c++  java
  • 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)
    

      

     
  • 相关阅读:
    图像和流媒体 -- 帧率、分辨率、码流的概念和关系(转)
    Linux设备驱动(转)
    STM32开发 -- 4G模块开发详解(转)
    Linux下EC20实现ppp拨号(转)
    使用机智云APP控制战舰V3 (转)
    USB Host读取U盘成功
    FreeModbus在STM32上移植(转)
    处理分页操作
    HBase参数配置及说明(转)
    学习JNDI
  • 原文地址:https://www.cnblogs.com/wts-home/p/9653056.html
Copyright © 2011-2022 走看看