django框架页面上传图片三个注意的写法
发布网友
发布时间:2022-04-24 20:27
我来回答
共2个回答
懂视网
时间:2022-05-10 22:15
Django上传并显示图片
非常详细的教程,教大家一步步用Django上传与显示图片。用例子学习是一个不错的方法,下面我用一个非常简单的例子为大家讲解Django中图片的上传与显示。
1. 创建名称为‘a’的项目
1
| $django-admin startproject a
|
2.在项目‘a’中创建名为‘b’的app
1 2
| $cd a $python manage.py startapp b
|
3.把b加入到settings.py中的INSTALLED_APPS中
1 2 3 4 5 6 7 8 9
| INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'b', )
|
4.在文件夹b下,编辑models.py,创建IMG类
1 2 3 4 5
| from __future__ import unicode_literals from django.db import models # Create your models here. class IMG(models.Model): img = models.ImageField(upload_to='upload')
|
5.更新数据库
1 2 3 4 5 6
| Django 1.7及以上的版本需要用以下命令 python manage.py makemigrations python manage.py migrate
Django 1.7以下用以下命令 python manage.py syncdb
|
6.在文件夹b下,编辑views.py,创建图片上传与显示函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from django.shortcuts import render from b.models import IMG # Create your views here. def uploadImg(request): if request.method == 'POST': new_img = IMG( img=request.FILES.get('img') ) new_img.save() return render(request, 'b/uploadimg.html')
def showImg(request): imgs = IMG.objects.all() content = { 'imgs':imgs, } return render(request, 'b/showimg.html', content)
|
7.在a文件夹下,编辑urls.py文件
1 2 3 4 5 6 7 8 9 10 11 12
| from django.conf.urls import url from django.contrib import admin from b import views from django.conf.urls.static import static from django.conf import settings
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^upload', 'b.views.uploadImg'), url(r'^show', 'b.views.showImg'), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
8.编辑a文件夹下的setting.py文件,添加如下代码:
1 2
| MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('', '/')
|
9.在b文件夹下创建templates文件夹,再在templates文件夹下创建b文件夹,再在新创建的b文件夹下创建uploadimg.html文件,内容如下:
1 2 3 4 5
| <form method="POST" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="img"> <button type="submit">上传</button> </form>
|
10.在uploadimg.html同目录下创建showimg.html文件
1 2 3
| {% for img in imgs %} <img src='{{ img.img.url }}' /> {% endfor %}
|
11.运行django程序
1
| $python manage.py runserver
|
12.上传图片
打开浏览器,输入地址:http://127.0.0.1:8000/upload,进入图片上传页面,点击“浏览”,选择要上传的图片,“上传”之。因为页面设计的比较简单,所以大家上传图片后,在本页面看不到任何变化,但确实已经上传了;
13.显示上传的图片
在浏览器中输入:http://127.0.0.1:8000/show,就会看到我们已经上传的图片。
PS:以上步骤仅仅是非常简单的图片上传与显示,更多复杂的图片上传显示问题,大家可以在次基础上修改。
热心网友
时间:2022-05-10 19:23
在django里图片上传里,分为两种一种是在django的后台上传图片,以数据库的方式上传,另一种是在html页面以表单的方式上传
首先要先安装下这个包 pip install Pillow==3.4.1
setting里需要设置 上传的路径
MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')
在model里要配置数据库
class PicTest(models.Model):
pic=models.ImageField(upload_to='booktest')
数据库里要有这个字段
在html 要写input type=’file’ 这个字段
在view里要写逻辑
还有涉及到要操作setting里的文件 需要导入设置的包
from django.conf import settings
import os
上传的图片都是保存在 /static/media/booktest/
接受提交的数据写到文件里
然后对提交的数据路径保存到 数据库里
在显示图片的时候 view.py get得到数据库里的路径地址
这里要注意 要是使用的all的方式获取的话 在html里就需要使用循环的方式来显示图片
然后在html <img url= "/static/media/{{p.pic}}
第一种以django后台的方式提交! 这种用的不多,在这里也简单说一下