Django2 + python3 上传图片
- .
- ├── db.sqlite3
- ├── manage.py
- ├── myImg
- │ ├── __init__.py
- │ ├── __pycache__
- │ │ ├── __init__.cpython-36.pyc
- │ │ ├── settings.cpython-36.pyc
- │ │ ├── urls.cpython-36.pyc
- │ │ └── wsgi.cpython-36.pyc
- │ ├── settings.py
- │ ├── urls.py
- │ └── wsgi.py
- ├── static
- │ └── media
- │ ├── 1493297157_517565.jpg
- │ ├── 3.png
- │ └── 6.png
- ├── templates
- │ └── myImg
- │ ├── showImg.html
- │ └── uploadPic.html
- └── upLoadImg
- ├── __init__.py
- ├── __pycache__
- │ ├── __init__.cpython-36.pyc
- │ ├── admin.cpython-36.pyc
- │ ├── models.cpython-36.pyc
- │ └── views.cpython-36.pyc
- ├── admin.py
- ├── apps.py
- ├── migrations
- │ ├── __init__.py
- │ └── __pycache__
- │ └── __init__.cpython-36.pyc
- ├── models.py
- ├── tests.py
- └── views.py
这是一种简单的做法 不需要用到数据库
setting.py中需要配置3个地方
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'upLoadImg',
- ]
- TEMPLATES = [
- {
- 'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': [os.path.join(BASE_DIR, "templates")],
- 'APP_DIRS': True,
- 'OPTIONS': {
- 'context_processors': [
- 'django.template.context_processors.debug',
- 'django.template.context_processors.request',
- 'django.contrib.auth.context_processors.auth',
- 'django.contrib.messages.context_processors.messages',
- ],
- },
- },
- ]
- STATIC_URL = '/static/'
- STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
- MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')
urls.py
- from django.contrib import admin
- from django.urls import path
- # from myImg.uploadPic import views
- from upLoadImg import views
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('uploadPic/',views.uploadPic),
- path('uploadHandle',views.uploadHandle)
- ]
views.py
- from django.shortcuts import render
- from django.conf import settings
- from django.http import HttpRequest,HttpResponse
- import os
- # Create your views here.
- def uploadPic(request):
- return render(request,'myImg/uploadPic.html')
- def uploadHandle(request):
- if request.method == "POST":
- f1 = request.FILES['pic1']
- fname = os.path.join(settings.MEDIA_ROOT,f1.name)
- with open(fname,'wb+') as pic:
- for c in f1.chunks():
- pic.write(c)
- return HttpResponse('<img src="/static/media/%s" width="500" height="500" alt="图片无法显示"/>'%f1.name) # 这里不给width和height会按图片本身分辨率显示
- else:
- return HttpResponse("error")
- #下面这个是直接显示路径
- # pic1 = request.FILES['pic1']
- # picName=os.path.join(settings.MEDIA_ROOT,pic1.name)
- # return HttpResponse(picName)#/Users/liuwei/myImg/static/media/6.png
- #file:///Users/liuwei/myImg/static/media/6.png
upLoadPic.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <form action="/uploadHandle" method="post" enctype="multipart/form-data">
- {% csrf_token %}
- <input type="file" name="pic1">
- <br>
- <input type="submit" value="上传">
- </form>
- </body>
- </html>
那进入myImg/目录 运行
- python3 manage.py runserver
在浏览器打开
- http://127.0.0.1:8000/uploadPic/
碰到几个问题:
1. 图片显示不了 那是因为setting .py中没有
- STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
2.上传不了 是因为 要用wb+ , 这个百度就可以了
- with open(fname,'wb+') as pic:
Django2 + python3 上传图片的更多相关文章
- django2+python3+uwsgi+centos7部署网站
Centos7中安装Python虚拟环境 2018年08月27日 00:09:36 kaichenkai 阅读数:984 1.为什么要搭建虚拟环境? 问题:如果在一台电脑上, 想开发多个不同的项目, ...
- django2 + python3 显示静态文件中的图片
之前一直搞不出来 是因为图片的问题,步骤也就是固定的几步,到位了就差不多成了 文件夹结构: . ├── HelloWorld │ ├── __init__.py │ ├── __pycache ...
- Python Virtualenv运行Django环境配置
系统: RHEL6.5 版本说明: Python-3.5.0 Django-1.10.4 virtualenv:为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各 ...
- 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建
由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...
- python3+django2 开发易语言网络验证(上)
创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...
- python3+django2 开发易语言网络验证(中)
第四步:网络验证的逻辑开发 1.将model注册到adminx.py中 1.在apps/yanzheng目录下新建admin.py 文件,添加代码: import xadmin from xadmin ...
- Django:Python3.6.2+Django2.0配置MySQL
持续学习Django中... Django默认使用的数据库是python自带的SQLlite3,但SQLlite并不适用于大型的项目,因此我将数据库换成了MySQL,下面介绍下Django如何配置数据 ...
- Python 3之Django2部署(centos7+nginx+python3+django2.0)
前置工具,系统为centos7.5,为了方便管理,可以安装宝塔免费版本 首先, yum install -y wget && wget -O install.sh http://dow ...
- 基于centos7+nginx+uwsgi+python3+django2.0部署Django项目
0.序言 本文讲解如何基于centos7+nginx+uwsgi+python3+django2.0把windows上的本地项目部署到云服务器上. 本文服务器上的django项目和虚拟环境的路径将建立 ...
随机推荐
- leetcode 36有效的数独
建立一个哈希表,每次查找,如果对应的列col,行row,小方格box中的数出现第二次,那么数独不合法: 据说还有深度优先搜索的方法,表示没有听懂:) class Solution { public: ...
- ES与CQRS之旅
引言 领域驱动设计(Domain Driven Design),使用统一的建模语言.专注业务领域分析.采取化整为零并反复迭代的方式,以业务领域模型为圆心,向外辐射到系统轮廓的勾勒.具体模块的实现,为我 ...
- sc 使用了配置中心后,如何设置远程和本地配置的优先级
在 spring 中,如何获取一个 key 的值? applicationContext.getEnvironment().getProperty("swagger.show") ...
- free pascal
https://freepascal.org/ free pascal OPEN SOURCE COMPILER FOR PASCAL AND OBJECT PASCAL GENERAL HomeNe ...
- StringBuffer 和Stringbuilder源码分析
首先看一下他们的继承关系 这个两个对象都继承了AbstractStringBuilder抽象类. 1.他们的实现方式都一样的,唯一区别的StringBuffer在多线程的时候是保证了数据安全, ...
- js获取指定字符后面的字符
function getCaption(obj){ var index=obj.lastIndexOf("\-"); obj=obj.substring(index+1,obj.l ...
- MySQL学习笔记(上)
在进行SQL注入原理的剖析的时候,对MySQL数据库掌握薄弱,参照菜鸟教程的MySQL教程速刷一遍MySQL 关于MySQL MySQL是最流行的关系型数据库管理系统,在WEB方面MySQL是最好的R ...
- Java中的容器(集合)
1.Java常用容器:List,Set,Map List: 继承了Collection接口(public interface List<E> extends Collection<E ...
- luogu 3426题解 (KMP)
题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置 ...
- 6、 逻辑回归(Logistic Regression)
6.1 分类问题 在分类问题中,你要预测的变量