Django2 + python3 上传图片
2024-10-07 11:41:37
.
├── 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:
最新文章
- CSS实现图片缩放特效
- 高阶Laplace曲面形变算法(Polyharmonic Deformation)
- mysql 时间函数
- 2016年GitHub排名前20的Python机器学习开源项目(转)
- git的使用(3) 多分支情况下的pull
- 机器学习中的算法-决策树模型组合之随机森林与GBDT
- Android中使用广播机制退出多个Activity
- 命令行下玩VC
- 让VS2010支持HTML5
- WCF/WPF公司内部订餐程序开发
- 利用jmeter+JAVA对RPC的单接口(dubbo接口等)进行性能测试
- Eclipse安装SVN插件(转载)
- Wpf binging(一) 基础
- centos 安装nvm和node.js
- 网站后台搭建--springboot项目是如何创建的
- 002_HTTP每日分析及翻译
- [zoj4046][树状数组求逆序(强化版)]
- IE浏览器强制不是要兼容视图
- 使用环信开发项目遇到错误提示 configure your build for VectorDrawableCompat
- 【HTML5】中的一些新标签