本文为作者原创,转载请注明出处(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:

如果外网不能访问,需要配置一下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-.pyc
│   │   └── settings.cpython-.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搭建一个简易上传显示图片的后台的更多相关文章

  1. jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具

    1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...

  2. Django(十九)文件上传:图片上传(后台上传、自定义上传)、

    一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings ...

  3. 一个node.js图片上传显示小应用

    文件结构如下: 实现的功能有: 可以通过浏览器使用. 当请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单. 用户可以选择一个图片并提交表单,随后文件将被上 ...

  4. plupload简易应用 多图片上传显示预览以及删除

    <script> var uploader = new plupload.Uploader({ //实例化一个plupload上传对象 browse_button: 'btnBrowse' ...

  5. Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端

    要搞一个小型的cms内容发布系统 因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查 微信小程序其实给我们提供了 ...

  6. ssm框架实现图片上传显示并保存地址到数据库

    本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...

  7. Angularjs,WebAPI 搭建一个简易权限管理系统

    Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一)   1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 Web ...

  8. MVC应用程序显示上传的图片

    MVC应用程序显示上传的图片 前两篇<MVC应用程序实现上传文件>http://www.cnblogs.com/insus/p/3590907.html和<MVC应用程序实现上传文件 ...

  9. Ecshop商品描述上传中文名图片无法显示解决方法

    在后台上传商品图片的时候,如果你选择一个中文名称的图片,那么上传后会产生乱码,导致图片显示不出来. 下面说一种解决办法:使用"年月日时分秒 + 6个随机字符"做为文件名,如 201 ...

随机推荐

  1. markdown编辑器的学习

    markdown编辑器的学习 1 标题 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 2列表 无序列表 1 2 3 4 有序列表 1 2 3 4 3引用 这里是引用,哈哈我也不知道到我引 ...

  2. String和StringBuffer分别作为参数传递注意项

    public staticvoid main(){ String s1 = "abc"; StringBuffer sb = new StringBuffer(); sb.appe ...

  3. jsonp其实很简单【ajax跨域请求】

    js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...

  4. Windows下 如何添加开机启动项

    Windows XP,Windows 7: 开始 ----> 所有程序 ----> 启动, 右键打开"启动"这个文件夹, 把想开机自动启动的软件快捷方式拖进去即可. ( ...

  5. 好用的前端页面性能检测工具—sitespeed.io

    引言 最近在做HTTP2技术相关调研,想确认一下HTTP2在什么情境下性能会比HTTP1.x有显著提升,当我把http2的本地环境(nginx+PHP)部署完成后进行相关测试时,我遇到了以下问题: ( ...

  6. Codecraft-17 and Codeforces Round #391 (Div. 1 + Div. 2, combined)D. Felicity's Big Secret Revealed

    题目连接:http://codeforces.com/contest/757/problem/D D. Felicity's Big Secret Revealed time limit per te ...

  7. 初识Hibernate之关联映射(一)

    上篇文章我们对持久化对象进行的学习,了解了它的三种不同的状态并通过它完成对数据库的映射操作.但这都是基于单张表的操作,如果两张或者两张以上的表之间存在某种关联,我们又该如何利用持久化对象进行操作呢?本 ...

  8. java中需要注意的小细节

    很早以前就打算写博客,但是总是因为不知道写什么,或是觉得博客里其他人已经把我要写的整理很好了而迟迟没有动笔,现在决定把自己平时的记录的一些笔记拿出来,希望大神们可以批评指导,并且希望能够帮助一些刚刚入 ...

  9. 醒醒吧!互联网的真正未来不是AI,更不是VR,AR,而是区块链

    这些力量并非命运,而是轨迹.他们提供的并不是我们将去向何方的预测,而是告诉我们,在不远的将来,我们会向那个方向前行,必然而然. ---凯文•凯利 文字与货币 人类在演化过程中,凭借智慧创造了无数事物, ...

  10. .net通用防SQL注入漏洞程序(Global.asax方式)

    原理很简单:使用Global.asax中的Application_BeginRequest(object sender, EventArgs e)事件,实现表单或URL提交数据的获取,然后通过SQLI ...