• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    django实现图片上传数据库并显示

    Django文件上传,供大家参考,具体内容如下

    需求

    1、完成学生信息注册操作
    2、将学生信息入库
    3、将上传文件存放至项目下media文件夹下
    4、显示所有学生信息

    创建模型类

    class Student(models.Model):
        sno = models.AutoField(primary_key=True)
        sname = models.CharField(max_length=30)
        photo = models.ImageField(upload_to='imgs')
        !--内部类写法 数据库中的名字-->
        class Meta:
            db_table = 't_stu'
    
        def __str__(self):
            return self.sname

    settings.py文件中文件上传相关设置

    INSTALLED_APPS = [
        ...
        'stu'
    ]
    
    DATABASES = {
         'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django22',
            'USER': 'root',
            'PASSWORD': '123321',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
    
    MEDIA_URL = '/media/'
    !--设置MEDIA_ROOT 默认为空  模型类中图片上传地址 MEDIA_ROOT+up_load -->
    !--BASE_DIR 为项目录 -->
    MEDIA_ROOT = os.path.join(BASE_DIR,'media')

    映射数据库表

    #在终端中敲命令
    python manage.py makemigrations test
    python manage.py migrate

    配置URL

    主路由

    from django.contrib import admin
    from django.urls import path, re_path,include
    
    from djurls.settings import MEDIA_ROOT
    from stu import urls
    from .import views
    
    #配置路由读取后台上传文件
    from django.views.static import serve
    urlpatterns = [
         path('test/',include('test.urls')),
    
    re_path(r'^media/(?Ppath>.*)/$', serve, {"document_root": MEDIA_ROOT}),
    #server 视图函数 将MEDIA的路径和正则匹配的模板路径 显示图片

    子路由

    from django.urls import path
    
    from test import views
    
    
    urlpatterns = [
        path('test/',views.index.as_view()),
        path('show/',views.show)
    
    ]

    创建视图

    stu/views.py

    import os
    
    from django.http import HttpResponse, HttpResponseRedirect, Http404
    from django.shortcuts import render
    from django.views import View
    
    from djurls.settings import BASE_DIR
    from test.models import Student
    !--通过as_view处理自动获取请求方式-->
    class index(View):
        def get(self,request):
            return render(request,'load.html')
        def post(self,request):
            name=request.POST.get('sname','')
            photo=request.FILES.get('photo','')
            age=request.POST.get('age','')
            !--进行校验 将文件名的后缀字符串分割 判断-->
            extenedname=photo.name[photo.name.rindex('.')+1:]
            allowedname=['jpg','png']
            if extenedname not in  allowedname:
                return Http404()
            stu=Student.objects.create(sname=name,age=20,photo=photo)
            if stu:
                return HttpResponse('注册成功')
            else:
                return HttpResponseRedirect('/test/test/')
    
    
    def show(request):
        stulist=Student.objects.all()
        return render(request,'show.html',{'stulist':stulist})

    创建模板

    templates/index.html 注册界面

    !DOCTYPE html>
    html lang="en">
    head>
        meta charset="UTF-8">
        title>Title/title>
    /head>
    body>
        form action="/test/test/"  method="post" enctype="multipart/form-data">
            {% csrf_token %}
            p>姓名input type="text" name="sname">/p>
            p>年龄 input type="number" name="age">/p>
            p>照片 input type="file" name="photo">/p>
            input type="submit" value="注册">
        /form>
    /body>
    /html>

    show.html 显示数据 加载图片

    !DOCTYPE html>
    html lang="en">
    head>
        meta charset="UTF-8">
        title>Title/title>
    /head>
    body>
        table border="1px solid black" cellspacing="0px" width="500px" align="center">
    
            tr height="100px" align="center">
                td >编号/td>
                td >姓名 /td>
                td >年龄/td>
                td >头像/td>
            /tr>
            {% for stu in stulist %}
            tr height="100px" align="center">
                td >{{ forloop.counter }} /td>
                td >{{ stu.sname }}/td>
                td >{{ stu.age }}/td>
                td >img src="/media/{{ stu.photo }}" alt="">/td>
                !--读取photo的路径 在主路由访问 通过server处理并显示-->
            /tr>
            {% endfor %}
        /table>
    /body>
    /html>

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • Django 实现图片上传和下载功能
    • Django实现图片上传功能步骤解析
    • 在django中图片上传的格式校验及大小方法
    • django mysql数据库及图片上传接口详解
    • Django 实现图片上传和显示过程详解
    • Django框架文件上传与自定义图片上传路径、上传文件名操作分析
    • django将图片上传数据库后在前端显式的方法
    • Django后台获取前端post上传的文件方法
    • 利用django如何解析用户上传的excel文件
    • Python+django实现文件上传
    上一篇:Python接口自动化浅析登录接口测试实战
    下一篇:详解Python模块化--模块(Modules)和包(Packages)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    django实现图片上传数据库并显示 django,实现,图片,上传,数据库,