1. .
  2. ├── db.sqlite3
  3. ├── manage.py
  4. ├── myImg
  5.    ├── __init__.py
  6.    ├── __pycache__
  7.       ├── __init__.cpython-36.pyc
  8.       ├── settings.cpython-36.pyc
  9.       ├── urls.cpython-36.pyc
  10.       └── wsgi.cpython-36.pyc
  11.    ├── settings.py
  12.    ├── urls.py
  13.    └── wsgi.py
  14. ├── static
  15.    └── media
  16.    ├── 1493297157_517565.jpg
  17.    ├── 3.png
  18.    └── 6.png
  19. ├── templates
  20.    └── myImg
  21.    ├── showImg.html
  22.    └── uploadPic.html
  23. └── upLoadImg
  24. ├── __init__.py
  25. ├── __pycache__
  26.    ├── __init__.cpython-36.pyc
  27.    ├── admin.cpython-36.pyc
  28.    ├── models.cpython-36.pyc
  29.    └── views.cpython-36.pyc
  30. ├── admin.py
  31. ├── apps.py
  32. ├── migrations
  33.    ├── __init__.py
  34.    └── __pycache__
  35.    └── __init__.cpython-36.pyc
  36. ├── models.py
  37. ├── tests.py
  38. └── views.py

这是一种简单的做法 不需要用到数据库

setting.py中需要配置3个地方

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'upLoadImg',
  9. ]
  10.  
  11. TEMPLATES = [
  12. {
  13. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  14. 'DIRS': [os.path.join(BASE_DIR, "templates")],
  15. 'APP_DIRS': True,
  16. 'OPTIONS': {
  17. 'context_processors': [
  18. 'django.template.context_processors.debug',
  19. 'django.template.context_processors.request',
  20. 'django.contrib.auth.context_processors.auth',
  21. 'django.contrib.messages.context_processors.messages',
  22. ],
  23. },
  24. },
  25. ]
  26.  
  27. STATIC_URL = '/static/'
  28. STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
  29. MEDIA_ROOT=os.path.join(BASE_DIR,'static/media')

urls.py

  1. from django.contrib import admin
  2. from django.urls import path
  3. # from myImg.uploadPic import views
  4. from upLoadImg import views
  5.  
  6. urlpatterns = [
  7. path('admin/', admin.site.urls),
  8. path('uploadPic/',views.uploadPic),
  9. path('uploadHandle',views.uploadHandle)
  10. ]

views.py

  1. from django.shortcuts import render
  2. from django.conf import settings
  3. from django.http import HttpRequest,HttpResponse
  4. import os
  5. # Create your views here.
  6. def uploadPic(request):
  7. return render(request,'myImg/uploadPic.html')
  8.  
  9. def uploadHandle(request):
  10. if request.method == "POST":
  11. f1 = request.FILES['pic1']
  12. fname = os.path.join(settings.MEDIA_ROOT,f1.name)
  13. with open(fname,'wb+') as pic:
  14. for c in f1.chunks():
  15. pic.write(c)
  16. return HttpResponse('<img src="/static/media/%s" width="500" height="500" alt="图片无法显示"/>'%f1.name) # 这里不给width和height会按图片本身分辨率显示
  17.  
  18. else:
  19. return HttpResponse("error")
  20.  
  21. #下面这个是直接显示路径
  22. # pic1 = request.FILES['pic1']
  23. # picName=os.path.join(settings.MEDIA_ROOT,pic1.name)
  24. # return HttpResponse(picName)#/Users/liuwei/myImg/static/media/6.png
  25. #file:///Users/liuwei/myImg/static/media/6.png

upLoadPic.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8.  
  9. <form action="/uploadHandle" method="post" enctype="multipart/form-data">
  10. {% csrf_token %}
  11. <input type="file" name="pic1">
  12. <br>
  13. <input type="submit" value="上传">
  14. </form>
  15. </body>
  16. </html>

那进入myImg/目录 运行

  1. python3 manage.py runserver

在浏览器打开

  1. http://127.0.0.1:8000/uploadPic/

碰到几个问题:

1. 图片显示不了 那是因为setting .py中没有

  1. STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]

2.上传不了 是因为 要用wb+ , 这个百度就可以了

  1. 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. leetcode 36有效的数独

    建立一个哈希表,每次查找,如果对应的列col,行row,小方格box中的数出现第二次,那么数独不合法: 据说还有深度优先搜索的方法,表示没有听懂:) class Solution { public: ...

  2. ES与CQRS之旅

    引言 领域驱动设计(Domain Driven Design),使用统一的建模语言.专注业务领域分析.采取化整为零并反复迭代的方式,以业务领域模型为圆心,向外辐射到系统轮廓的勾勒.具体模块的实现,为我 ...

  3. sc 使用了配置中心后,如何设置远程和本地配置的优先级

    在 spring 中,如何获取一个 key 的值? applicationContext.getEnvironment().getProperty("swagger.show") ...

  4. free pascal

    https://freepascal.org/ free pascal OPEN SOURCE COMPILER FOR PASCAL AND OBJECT PASCAL GENERAL HomeNe ...

  5. StringBuffer 和Stringbuilder源码分析

    首先看一下他们的继承关系   这个两个对象都继承了AbstractStringBuilder抽象类.   1.他们的实现方式都一样的,唯一区别的StringBuffer在多线程的时候是保证了数据安全, ...

  6. js获取指定字符后面的字符

    function getCaption(obj){ var index=obj.lastIndexOf("\-"); obj=obj.substring(index+1,obj.l ...

  7. MySQL学习笔记(上)

    在进行SQL注入原理的剖析的时候,对MySQL数据库掌握薄弱,参照菜鸟教程的MySQL教程速刷一遍MySQL 关于MySQL MySQL是最流行的关系型数据库管理系统,在WEB方面MySQL是最好的R ...

  8. Java中的容器(集合)

    1.Java常用容器:List,Set,Map List: 继承了Collection接口(public interface List<E> extends Collection<E ...

  9. luogu 3426题解 (KMP)

    题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置 ...

  10. 6、 逻辑回归(Logistic Regression)

    6.1 分类问题 在分类问题中,你要预测的变量