zoukankan      html  css  js  c++  java
  • Django 前台上传以及显示图片

    前台上传图片
    1. 前台
    templates/upload/upload.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="/myupload/upload/" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        名字:<input type="text" name="name"><br>
        头像:<input type="file" name="avator"><br>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>

    2. 项目设定
    settings.py
    #添加

    ALLOW_UPLOAD = ['jpg', 'png', 'jpeg']

    3.app设定
    urls.py

    from django.contrib import admin
    from django.urls import path, register_converter, re_path
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),  # 上传首页
        path('upload/', views.upload),  # 上传图片
    ]

    views.py

    from django.shortcuts import render
    from .models import User,Article
    from django.http import HttpResponse
    from django.conf import settings
    from datetime import datetime
    import os
    from django.shortcuts import redirect, reverse
    import hashlib
    
    # Create your views here.
    def index(request):
        users = User.objects.all()
        article = Article.objects.all()
        return render(request, 'myupload/index.html', locals())
    
    
    def upload(request):
        if request.method == 'GET':
            return render(request, 'myupload/upload.html')
        else:
            name = request.POST.get('name')
            pic = request.FILES.get('avator')
    
            media_root = settings.MEDIA_ROOT  # media
            allow_upload = settings.ALLOW_UPLOAD  # ALLOW_UPLOAD
            # path = 'upload/{}/{}/{}/'.format(datetime.now().year, datetime.now().month, datetime.now().day)
            '{:02d}'.format
            path = 'upload/{}/{}/{}/'.format(datetime.now().year,'{:02d}'.format(datetime.now().month), '{:02d}'.format(datetime.now().day))
            full_path = media_root + '/' + path
    
            # full_path = 'media/upload/2019/12/20'
            if not os.path.exists(full_path):  # 判断路径是否存在
                os.makedirs(full_path)  # 创建此路径
    
            # 要不要改图片的名字 生成hash
            # 这块要不要判断图片类型  .jpg  .png .jpeg
            # '/../../../myviews/setting.py'
            print(pic)
            print(full_path)
            print(full_path+pic.name)
            if pic.name.split('.')[-1] not in allow_upload:
                return HttpResponse('fail')
    
            with open(full_path + '/' + pic.name, 'wb') as f:
                for c in pic.chunks():  # 相当于切片
                    f.write(c)
    
            User.objects.create(name=name, avator=path + pic.name)
            return redirect('myupload:index')



  • 相关阅读:
    根据访问属性进行差异化数据加载
    前人挖坑,后人填坑
    也让盲人拥抱互联网
    谈谈D2
    Android数据库大批量数据插入优化
    framework中编译anroid工程并在模拟器上运行
    简单JNI使用demo
    解决javah生成c头文件时找不到android类库的问题
    JNI的native代码中打印日志到eclipse的logcat中
    Android.mk简介<转>
  • 原文地址:https://www.cnblogs.com/tingxin/p/12939398.html
Copyright © 2011-2022 走看看