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

本文介绍了如何在Django项目中使用MySQL存储图片,并展示上传的图片。首先,在models.py中添加ImageField,然后配置settings.py以处理媒体文件。接着,创建并迁移数据库,更新模板文件如upload.html和showing.html以处理文件上传和显示。最后,配置urls和views.py以处理图片的上传和显示操作。
摘要由CSDN通过智能技术生成

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

{% csrf_token %}

上传

首先需要一个form,enctype="multipart/form-data" method="post" 是必须要填写的,表示数据不经过编码,直接上传。{%csrf_token%}也是post时,django强制要求的。

(2)showing.html

{% for image in imgs %}

{% if image.img %}

{# 这种方式也可以打开图片%7B%7B%20MEDIA_URL%20%7D%7D%7B%7B%20image.img%20%7D%7D#}

%7B%7B%20image.img.url%20%7D%7D

{% 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值