zoukankan      html  css  js  c++  java
  • Django上传并显示图片

    非常详细的教程,教大家一步步用Django上传与显示图片。用例子学习是一个不错的方法,下面我用一个非常简单的例子为大家讲解Django中图片的上传与显示。

    1. 创建名称为‘a’的项目

    1
    $django-admin startproject a

    2.在项目‘a’中创建名为‘b’的app

    1
    2
    $cd a
    $python manage.py startapp b

    3.把b加入到settings.py中的INSTALLED_APPS中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'b',
    )

    4.在文件夹b下,编辑models.py,创建IMG类

    1
    2
    3
    4
    5
    from __future__ import unicode_literals
    from django.db import models
    # Create your models here.
    class IMG(models.Model):
    img = models.ImageField(upload_to='upload')

    5.更新数据库

    1
    2
    3
    4
    5
    6
    Django 1.7及以上的版本需要用以下命令
    python manage.py makemigrations
    python manage.py migrate

    Django 1.7以下用以下命令
    python manage.py syncdb

    6.在文件夹b下,编辑views.py,创建图片上传与显示函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    from django.shortcuts import render
    from b.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, 'b/uploadimg.html')

    def showImg(request):
    imgs = IMG.objects.all()
    content = {
    'imgs':imgs,
    }
    return render(request, 'b/showimg.html', content)

    7.在a文件夹下,编辑urls.py文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from django.conf.urls import url
    from django.contrib import admin
    from b import views
    from django.conf.urls.static import static
    from django.conf import settings


    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^upload', 'b.views.uploadImg'),
    url(r'^show', 'b.views.showImg'),
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

    8.编辑a文件夹下的setting.py文件,添加如下代码:主要的作用是配置上传文件的根路径

    1
    2
    MEDIA_URL = '/media/'  URL的映射,前后要加上‘/’ 表示从根目录开始,比如“/site_media/”,加上这个属性之后,静态文件的链接前面会加上这个值可以随便写但不能不写
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\', '/') 文件上传的根路径

    9.在b文件夹下创建templates文件夹,再在templates文件夹下创建b文件夹,再在新创建的b文件夹下创建uploadimg.html文件,内容如下:

    1
    2
    3
    4
    5
    <form method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="img">
    <button type="submit">上传</button>
    </form>

    10.在uploadimg.html同目录下创建showimg.html文件

    1
    2
    3
    {% for img in imgs %}
    <img src='{{ img.img.url }}' />
    {% endfor %}

    11.运行django程序

    1
    $python manage.py runserver

    12.上传图片

    打开浏览器,输入地址:http://127.0.0.1:8000/upload,进入图片上传页面,点击“浏览”,选择要上传的图片,“上传”之。因为页面设计的比较简单,所以大家上传图片后,在本页面看不到任何变化,但确实已经上传了;

    13.显示上传的图片

    在浏览器中输入:http://127.0.0.1:8000/show,就会看到我们已经上传的图片。

    PS:以上步骤仅仅是非常简单的图片上传与显示,更多复杂的图片上传显示问题,大家可以在次基础上修改。

    原创文章如转载,请注明本文链接:http://www.cognize.me/2016/05/09/djangopic

  • 相关阅读:
    面向对象的程序设计-继承
    Chrome开发工具之Console
    面向对象的程序设计-原型模式
    面向对象的程序设计-工厂模式、构造函数模式
    面向对象的程序设计-理解对象
    引用类型-Array类型
    引用类型-Object类型
    单体内置对象
    基本包装类型
    引用类型-Function类型
  • 原文地址:https://www.cnblogs.com/antflow/p/7611793.html
Copyright © 2011-2022 走看看