Django1.11搭建一个简易上传显示图片的后台
Posted 负赑屃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django1.11搭建一个简易上传显示图片的后台相关的知识,希望对你有一定的参考价值。
本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃
项目展示需要,之前没研究过Django,网上查资料快速做了一个后台,写下了防止自己忘了。
1. 安装Django:
pip install Django
2. 测试Django:
python
>> import django
>>django.VERSION
显示版本为(1, 11, 5, \'final\', 0),刚接触,github也没找到能运行起来的。
3. 运行一个demo
找到django-admin.py这个文件的路径,一般pip安装在Python的sit-packages里,如果是anaconda会在anaconda/bin目录下
whereis django-admin.py
打开该文件所在的目录
cd [$path of django-admin.py$]
在当前目录内产生一个HelloWorld项目,也可以在其他目录创建
django-admin.py startproject HelloWorld
进入HelloWorld项目内,用tree命令查看一下目录结构,如果没有tree这个工具建议安装一个:apt install tree或者yum install tree
tree
.
|-- HelloWorld
| |-- __init__.py
| |-- settings.py
| |-- urls.py
| `-- wsgi.py
`-- manage.py
4. 运行测试
进入HelloWorld项目manager负责项目运行管理,它内部的子目录HelloWorld里面存放的是url配置及项目的setting配置,可以先在本地运行一下:
python manage.py runserver
直接访问localhost:8000就发现成功了。如果是外网访问,可以通过指定端口的方式,例如指定80端口:
python manage.py runserver 0.0.0.0:80
如果外网不能访问,需要配置一下setting.py中的ALLOWED_HOSTS,修改为:
ALLOWED_HOSTS = [‘*’]
直接用域名或者公网ip访问即可:
5. 创建一个uploadImg的app
在HelloWorld目录下运行manage.py
python manage.py startapp uploadImg
把这个应用加入到setting.py的INSTALLED_APPS中
INSTALLED_APPS = [
\'django.contrib.admin\',
\'django.contrib.auth\',
\'django.contrib.contenttypes\',
\'django.contrib.sessions\',
\'django.contrib.messages\',
\'django.contrib.staticfiles\',
\'uploadImg\',
]
可以看一下现在HelloWorld目录结构:tree
.
├── HelloWorld1
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-36.pyc
│ │ └── settings.cpython-36.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── loadImg
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── manage.py
loadImg是刚才创建的app,其中的model不言而喻,肯定是数据相关了。vim loadImg/models.py,创建IMG类
from django.db import models
# Create your models here.
class IMG(models.Model):
img = models.ImageField(upload_to=\'upload\')
6. 更新数据库
python manage.py makemigrations
python manage.py migrate
我是django1.11版本,所以是这两句命令,低于1.7版本命令为python manage.py syncdb
7. 编辑uploadImg目录下的views.py,创建图片上传和显示函数
from django.shortcuts import render
from uploadImg.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, \'uploadimg.html\')
def showImg(request):
imgs = IMG.objects.all()
content = {
\'imgs\':imgs,
}
return render(request, \'showimg.html\', content)
8. 修改HelloWorld目录下的urls.py文件,这里相关博客提供的我没有配通,所以自己修改了一下,1.10版本后直接import views会提示错误,新手小白需要注意:
from django.conf.urls import url
from django.contrib import admin
from uploadImg.views import uploadImg,showImg
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
url(r\'^admin/\', admin.site.urls),
url(r\'^upload\', uploadImg),
url(r\'^show\', showImg),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
修改setting.py文件,添加配置上传文件路径:
MEDIA_URL = \'/media/\'
MEDIA_ROOT = os.path.join(BASE_DIR, \'media\').replace(\'\\\\\', \'/\')
9. 在uploadImg目录下创建templates目录,在该目录下分别创建uploadimg.html和showimg.html
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="img">
<button type="submit">上传</button>
</form>
{% for img in imgs %}
<img src=\'{{ img.img.url }}\' />
{% endfor %}
10. 运行测试第4步进行
需要注意,如果不是root用户没有配置默认是没有80端口权限的,建议使用其他端口。
参考:
http://www.cnblogs.com/yubenliu/p/6121536.html
http://www.runoob.com/django/django-tutorial.html
以上是关于Django1.11搭建一个简易上传显示图片的后台的主要内容,如果未能解决你的问题,请参考以下文章
使用python来搭建一个简易的文件下载环境以及用droopy来实现一个文件上传环境
一个网站后台和前台在同一个项目中,后台在admin这个文件夹中,上传图片的时候存储路径,后台想要显示图片