django 实现图片上传和显示操作
2018-09-14 19:58
543 查看
准备工作:
pip install pillow 安装python图片处理库 pillow
pip install mysqlclient 安装mysql驱动包
django工程的创建和app的创建
在settings.py文件中加载app
上传操作的实现:
在所建app中修改models.py文件:
class Img(models.Model): img_url = models.ImageField(upload_to='img') # upload_to指定图片上传的途径,如果不存在则自动创建
执行以下命令,建立项目与数据库之间的关系
python manage.py makemigrations python manage.py migrate
**修该项目的settings.py文件
加载mysql驱动并连接mysql,并添加图片上传的根目录**
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 加载驱动 'NAME': 'imgs',# 数据库名 'USER': 'root',# mysql的用户名 'PASSWORD': '',# mysql的密码 'HOST': 'localhost', # 连接地址(本地的话使用localhost或者127.0.0.1) 'PORT': 3306 # 数据库服务的端口号 } }
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') # media即为图片上传的根路径 MEDIA_URL = '/media/'
编写views.py文件
def uploadImg(request): # 图片上传函数 if request.method == 'POST': img = Img(img_url=request.FILES.get('img')) img.save() return render(request, 'imgupload.html')
在urls.py文件中添加url映射路径
from imgTest.views import uploadImg # 添加 urlpatterns = [ path('admin/', admin.site.urls), path('uploadImg/', uploadImg), # 新增 ]
创建模板文件
在所建app的目录新建文件夹templates,并创建imgUpload.html添加以下内容
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片上传</title> </head> <body> <form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="img"> <input type="submit" value="上传"> </form> </body> </html>
启动django服务器,在浏览器中输入http://localhost:8000/uploadImg/就可以看到上传的界面。
图片的显示操作
修改views.py文件添加图片显示函数
def showImg(request): imgs = Img.objects.all() # 从数据库中取出所有的图片路径 context = { 'imgs' : imgs } return render(request, 'showImg.html', context)
修改urls.py添加映射并加载图片静态路径
from django.contrib import admin from django.urls import path from imgTest.views import uploadImg, showImg from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), path('uploadImg/', uploadImg), path('showImg/', showImg) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) **新建图片显示模板文件showImg.html,并添加以下内容** <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片展示</title> </head> <body> {% for item in imgs %} <img src="{{ item.img_url.url }}"><br/> {% endfor %} </body> </html>
重启django服务器并在浏览器中输入http://localhost:8000/showImg/即可看到上传的所有图片
阅读更多相关文章推荐
- 操作Oracle数据库实现上传图片到Blob类型的字段
- 自定义控件实现无刷新上传图片,立即显示缩略图,保存图片缩略图<原创>
- JQuery实现input上传图片显示缩略图
- Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传
- 用Seam实现:图片上传 + 保存到数据库 + 从数据库读出图片并显示到页面中
- django中实现图片上传
- 利用struts2框架实现当用户上传图片到服务器后,再显示到前台页面中
- asp.net 自定义控件实现无刷新上传图片,立即显示缩略图,保存图片缩略图
- css实现上传文件,file按钮用图片显示
- 操作Oracle数据库实现上传图片到Blob类型的字段出现的问题
- 安卓自定义View实现图片上传进度显示(仿QQ)
- 使用Uploadify实现上传图片生成缩略图例子,实时显示进度条
- .net 实现的上传下载,如果是图片就显示上传的图片
- 利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- css实现上传文件,file按钮用图片显示
- .net 实现批量上传图片,图片还要显示出来
- struts2+jquery之form插件实现异步上传图片并显示
- Flex与.NET互操作(十五):使用FluorineFx中的字节数组(ByteArray)实现图片上传
- 利用FormData实现附件上传(实现上传图片显示)