美文网首页
Django-图片上传和显示操作

Django-图片上传和显示操作

作者: 一技破万法 | 来源:发表于2020-07-03 19:46 被阅读0次

    操作步骤

    • 安装Pillow库
    • 创建app
    • settings.py加载app

    安装Pillow库

    python3 pip3 install pillow
    

    创建app

    命令行创建
    python3 manage.py startapp photo
    
    建立项目与数据库之间的联系
    python3 manage.py makemigrations
    python3 manage.py migrate
    

    修改settings.py文件

    文件中最后加入

    MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/') # media即为图片上传的根路径
    MEDIA_URL = '/media/'
    

    编写上传视图

    修改views.py文件

    def uploadImg(request): # 图片上传函数
        if request.method == 'POST':
            img = Img(img_url=request.FILES.get('img'))
            img.save()
        return render(request, 'imgupload.html')
    

    编写映射

    在urls.py文件中添加url映射路径

    from imgTest.views import uploadImg # 添加
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('uploadImg/', uploadImg), # 新增
    ] 
    

    编写上传页面

    在所建app的目录新建文件夹templates,并创建imgUpload.html添加以下内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>图片上传</title>
    </head>
    <body>
        <form action="" method="post" enctype="multipart/form-data">
            {% csrf_token %}
            <input type="file" name="img">
            <input type="submit" value="上传">
        </form>
    </body>
    </html>
    

    启动django服务器,在浏览器中输入http://localhost:8000/uploadImg/就可以看到上传的界面。

    编写显示视图

    修改views.py文件

    def showImg(request):
        imgs = Img.objects.all() # 从数据库中取出所有的图片路径
        context = {
            'imgs' : imgs
        }
        return render(request, 'showImg.html', context)
    

    修改映射

    修改urls.py添加映射并加载图片静态路径

    from django.contrib import admin
    from django.urls import path
    from imgTest.views import uploadImg, showImg
    from django.conf.urls.static import static
    from django.conf import settings
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('uploadImg/', uploadImg),
        path('showImg/', showImg)
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    编写显示页面

    新建图片显示模板文件showImg.html,并添加以下内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>图片展示</title>
    </head>
    <body>
        {% for item in imgs %}
            <img src="{{ item.img_url.url }}"><br/>
        {% endfor %}
    </body>
    </html>
    

    重启django服务器并在浏览器中输入http://localhost:8000/showImg/即可看到上传的所有图片

    一技破万法

    相关文章

      网友评论

          本文标题:Django-图片上传和显示操作

          本文链接:https://www.haomeiwen.com/subject/gireqktx.html