当前位置: 首页 > news >正文

django项目实战十四(django+bootstrap实现增删改查)进阶混合数据使用modelform上传

目录

一、启用media

 1、URL设置

 2、settings.py配置

 二、url

 三、upload.py 新增upload_modelform方法

 四、form.py新增UpModelForm

五、创建city表

六、创建city_list.html


接上一篇《django项目实战十三(django+bootstrap实现增删改查)进阶混合数据form上传图片》

知识点:1、media启用

一、启用media

在 Django 的开发中有两个特殊的文件夹:

  • static: 存放静态文件
  • media:存放用户上传的数据,但是使用 media 需要做一些配置

 1、URL设置

re_path(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}, name='media'),

 2、settings.py配置

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

这样设置之后,上一篇可以修改一下

 

 二、url

 

 三、upload.py 新增upload_modelform方法

def upload_modelform(request):"""modelform上传"""title = "ModelForm上传"if request.method == 'GET':form = UpModelForm()# print(form)return render(request, 'upload_form.html', {"form": form, "title": title})form = UpModelForm(data=request.POST, files=request.FILES)if form.is_valid():form.save()redirect('/city/list/')return render(request, 'upload_form.html', {"form": form, "title": "form上传"})

 四、form.py新增UpModelForm


class UpModelForm(BootStrapModelForm):#  img 字段不使用bootstrap样式bootstrap_exclude_fields = ['img']class Meta:model = models.Cityfields = "__all__"

五、创建city表


class City(models.Model):"""城市"""name = models.CharField(verbose_name='名称', max_length=32)count = models.IntegerField(verbose_name='人口')# FileField本质上也是CharField,FileField自动保存数据img = models.FileField(verbose_name='LOGO', max_length=128, upload_to='city/')

六、创建city_list.html

{% extends 'layout.html' %}
{% block title %}<title>城市列表</title>
{% endblock %}
{% block content %}<div class="container"><div style="margin-bottom: 10px"><a class="btn btn-success" href="/upload/modelform/"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>新建</a><div style="float: right;width: 300px"><form method="get"><div class="input-group"><input type="text" name="q" class="form-control" placeholder="请输入城市名称"value="{{ search_data }}"><span class="input-group-btn"><button class="btn btn-default" type="submit"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></button></span></div></form></div></div><div class="bs-example" data-example-id="panel-without-body-with-table"><div class="panel panel-default"><!-- Default panel contents --><div class="panel-heading"><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>城市列表</div><!-- Table --><table class="table table-bordered"><thead><tr><th>序号</th><th>LOGO</th><th>名称</th><th>人口</th><th>操作</th></tr></thead><tbody>{% for obj in query_set %}<tr><th scope="row">{{ obj.id }}</th><td><img src="/media/{{ obj.img }}" style="height: 80px;"></td><td>{{ obj.name }}</td><td>{{ obj.count }}</td></tr>{% endfor %}</tbody></table></div></div><ul class="pagination">{{ page_string }}</ul></div>{% endblock %}

 

 

http://www.lryc.cn/news/20718.html

相关文章:

  • 2023年CDGA考试模拟题库(1-100)
  • HTML常用基础内容总结
  • Gorm-学习笔记
  • 【Neo4j】图数据库CypherQueryLanguage随笔
  • STM32Cube串口USART发送接收数据
  • OpenFeign详解
  • python多线程网络编程
  • BFS-走迷宫
  • 【蓝牙mesh】Lower协议层介绍
  • Java-重排序,happens-before 和 as-if-serial 语义
  • Nginx安装及介绍
  • 【华为OD机试模拟题】用 C++ 实现 - 寻找路径 or 数组二叉树(2023.Q1)
  • LINUX学习记录
  • 华为OD机试用Python实现 -【狼羊过河 or 羊、狼、农夫过河】(2023-Q1 新题)
  • 【SAP Abap】X-DOC:SAP ABAP 语法更新之Open SQL
  • leetcode 困难 —— 数组中的逆序对(分治法)
  • 02.24:图片的风格转换
  • [SSD综述 1.3] SSD及固态存储技术半个世纪发展史
  • PAT 1023 组个最小数(分数20)题目有bug
  • QML 中的 5 大布局
  • 使用Python进行数据分析——线性回归分析
  • 我眼中的柔宇科技
  • Allegro如何快速把视图居中显示操作指导
  • 搜索相关功能
  • 【从零开始制作 bt 下载器】一、了解 torrent 文件
  • SystemVerilog-时序逻辑建模(5)多个时钟和时钟域交叉
  • 基本中型网络的仿真(RYU+Mininet的SDN架构)-以校园为例
  • 西北工业大学大学物理(II)期末试题选填解析2021-2022
  • 【USB】windows热插拔通知接口分析
  • CMake入门