.
├── 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 上传图片的更多相关文章

  1. django2+python3+uwsgi+centos7部署网站

    Centos7中安装Python虚拟环境 2018年08月27日 00:09:36 kaichenkai 阅读数:984 1.为什么要搭建虚拟环境? 问题:如果在一台电脑上, 想开发多个不同的项目, ...

  2. django2 + python3 显示静态文件中的图片

    之前一直搞不出来 是因为图片的问题,步骤也就是固定的几步,到位了就差不多成了 文件夹结构: . ├── HelloWorld │   ├── __init__.py │   ├── __pycache ...

  3. Python Virtualenv运行Django环境配置

    系统: RHEL6.5 版本说明: Python-3.5.0 Django-1.10.4 virtualenv:为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各 ...

  4. 【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  5. python3+django2 开发易语言网络验证(上)

    创作背景: 在某论坛中下载到一套php开发易语言网络验证的教程,照着看下来,花了两天的时间,结果发现教程里开发的网络验证,以及随着教程一起给学员的源码,都存在着根本用不了的bug!我想要看看能不能在原 ...

  6. python3+django2 开发易语言网络验证(中)

    第四步:网络验证的逻辑开发 1.将model注册到adminx.py中 1.在apps/yanzheng目录下新建admin.py 文件,添加代码: import xadmin from xadmin ...

  7. Django:Python3.6.2+Django2.0配置MySQL

    持续学习Django中... Django默认使用的数据库是python自带的SQLlite3,但SQLlite并不适用于大型的项目,因此我将数据库换成了MySQL,下面介绍下Django如何配置数据 ...

  8. Python 3之Django2部署(centos7+nginx+python3+django2.0)

    前置工具,系统为centos7.5,为了方便管理,可以安装宝塔免费版本 首先, yum install -y wget && wget -O install.sh http://dow ...

  9. 基于centos7+nginx+uwsgi+python3+django2.0部署Django项目

    0.序言 本文讲解如何基于centos7+nginx+uwsgi+python3+django2.0把windows上的本地项目部署到云服务器上. 本文服务器上的django项目和虚拟环境的路径将建立 ...

随机推荐

  1. 如何将阿里云上的RDS 备份的mysql数据还原到windows环境中

    一.本地mysql数据库创建与备份库一致的数据库名,如testdb: 二.本地创建与备份库一致的数据库表,记得设置ALTER TABLE tableName1 ROW_FORMAT = compact ...

  2. DRF的路由生成类的使用

    DRF路由生成类的使用 对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息. REST framework ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_2_编码引出的问题_FileReader读取GBK格式文件

    IDEA默认的编码格式是UTF-8 新建一个txt文件.输入你好 ANSI就是系统默认编码.保存即可. 通过IDE打开是乱码的,因为默认打开的方式是UTF-8 转换为char类型 输出了乱码

  4. 没看这篇干货,别和我说你会IDEA Debug

    所谓工欲善其事必先利其器,现在idea已经成为java开发者眼中最热门最好用的IDE了.下面这篇文章将总结下idea调试的一些高级技巧. 多线程调试 直接上例子说明,比如下面这段代码 debug模式下 ...

  5. [USACO 2008 Jan. Silver]架设电话线 —— 最短路+二分

    一道图论的最短路题.一开始连最短路都没想到,可能是做的题太少了吧,完全没有思路. 题目大意: FJ的农场周围分布着N根电话线杆,任意两根电话线杆间都没有电话线相连.一共P对电话线杆间可以拉电话线,第i ...

  6. [2019杭电多校第七场][hdu6651]Final Exam

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6651 题意:n个科目,总共m分,通过一科需要复习花费科目分数+1分钟,在不知道科目分数的情况下,问最少 ...

  7. Codeforces 1159D The minimal unique substring(构造)

    首先我们先观察三个串 10,1110,11101110,答案都是红色部分,我们可以下一个结论,形如 1,1101,111101,那么答案为红色部分.我们可以发现,通过我们末尾添加的1,导致之前红色部分 ...

  8. APMServ升级PHP至5.3

    APMServ5.2.6 的php版本是php5.2.6,所以需要升级一下PHP版本:1.到 php下载地址下载PHP5.3的VC6版本的zip文件,我下载的是:php-5.3.23-Win32-VC ...

  9. Fiddler用法整理

    目 录 1 Fiddler的基本介绍 1.1 下载安装 1.2 适用平台 2 Fiddler的工作原理 3 同类工具 4 捕获非IE浏览器的会话 5 捕获不同请求的设置方法 5.1 Web HTTPS ...

  10. 网页中<a>标签新窗口和location.href 新窗口打开

    在网页制作过程中,经常遇到新窗口打开,一般是a超级链接或者location.href 新窗口打开形式,下面分别讲述两种之间的不同方式 1,a标签 新窗口 添加属性 target="_blan ...