首页 > 其他分享 >城市列表

城市列表

时间:2023-11-14 16:34:17浏览次数:29  
标签:city form list 城市 request 列表 html app01

编辑myprojrct/app01/templates/layout.html

<li><a href="/city/list/">城市列表(文件上传)</a></li>

  

 添加路由

编辑myproject/myproject/urls.py

1.
from app01.views import depart, pretty, user, admin, account, task, order, chart, upload, city

2.
#城市列表
path('city/list/', city.city_list),
path('city/add/', city.city_add),

  

创建视图函数myprojrct/app01/views.py/city.py

编辑myprojrct/app01/views.py/city.py

from django.shortcuts import render, HttpResponse, redirect
from app01 import models
from app01.utils.bootstrap import BootStrapModelForm


def city_list(request):
    queryset = models.City.objects.all()
    return render(request, 'city_list.html', {'queryset': queryset})

class UpModelForm(BootStrapModelForm):
    bootstrap_exclude_fields = ['img']

    class Meta:
        model = models.City
        fields = "__all__"

def city_add(request):

    title = "新建城市"
    if request.method == "GET":
        form = UpModelForm()
        return render(request, 'upload_form.html', {"form": form, "title": title})

    form = UpModelForm(data=request.POST, files=request.FILES)
    if form.is_valid():
        # 对于文件自动保存
        # 字段+上传路径写入到数据库
        form.save()
        return redirect("/city/list/")
    return render(request, 'upload_form.html', {"form": form, "title": title})

  

 新建city_list.html

编辑myproject/app01/templates/city_list.html

{#  继承模板  #}
{% extends 'layout.html' %}


{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px">
            <a class="btn btn-success" href="/city/add/">
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建城市
            </a>
        </div>
        <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>ID</th>
                    <th>LOGO</th>
                    <th>名称</th>
                    <th>人口</th>
                </tr>
                </thead>
                <tbody>
                {% for obj in queryset %}
                    <tr>
                        <th>{{ 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>
{% endblock %}

 

upload_form.html
{% extends 'layout.html' %}

{% block content %}
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">{{ title }}</h3>
            </div>
            <div class="panel-body">
                {#   novalidate去除浏览器的错误提示  #}
                <form method="post" enctype="multipart/form-data" novalidate>
                    {% csrf_token %}

                    {% for field in form %}
                        <div class="form-group">
                            <label>{{ field.label }}</label>
                            {{ field }}
                            {#  {{ field.errors }}错误信息是一个列表[错误1,错误2,错误3...], {{ field.errors.0 }}只取第一个错误1  #}
                            <span style="color: red;">{{ field.errors.0 }}</span>
                            {#   <input type="text" class="form-control" placeholder="姓名" name="user">  #}
                        </div>
                    {% endfor %}

                    <button type="submit" class="btn btn-primary">提 交</button>
                </form>
            </div>
        </div>
    </div>
{% endblock %}

  

 

 

 

 若上传的图片文件名一样,modelform会自动在文件名后加一串随机字符,保存到数据库中,不用担心文件重名问题 

标签:city,form,list,城市,request,列表,html,app01
From: https://www.cnblogs.com/kekeeleven/p/17831939.html

相关文章

  • 推导式创建序列_列表推导式_字典推导式_集合推导式_生成器推导式
    推导式创建序列:推导式是一个或多个迭代器快速创建序列的一种方法列表推导式列表推导式生成列表对象,语法如下[表达式for变量in可迭代对象]或者[表达式for变量in可迭代对象if条件判断]例如:y=[xforxinrange(1,5)]print(y)字典推导式字典的推导式生成字典对象,格式如......
  • 幸福城市平台:数据库选型与优化实践
    作者:Fly-bird随着外面平台和外卖行业的兴起,越来越多的企业开始涉足本地化的外卖、配送、跑腿等业务,目前市场基本是美团和饿了么的天下,但是在一些三线城市领域,存在着最本土化的本地电商平台-幸福城市,幸福城市不是一个平台,是N多个三线城市各自的品牌,只是使用了同一套技术平台。幸福......
  • 基于Electron IM消息列表滚动优化方案?
    在处理大量消息并进行滚动优化时,以下是一些常见的优化思路和技术方案:虚拟列表(VirtualList):使用虚拟列表可以只渲染当前可见的一部分消息,而不是所有的消息。这可以大大减少渲染的元素数量,提高性能。你可以根据滚动位置计算出可见的消息范围,并只渲染这些消息。懒加载(LazyLoading):当用......
  • 把列表换成JSON格式,并根据键取值
    defget_all(content,keyword):keys=[]values=[]forspecsinkeyword:num=keyword.index(specs)keys.append(specs)ifnum<=len(keyword)-2:values.append(keyword[num+1])else:......
  • 取标签列表的最后两位,并去除最后一个逗号,没有标签就用标题
    defupdate_biaoqian(tag_list,title):iftag_list==['']ortag_list==[]:print('没有标签,取标题作为标签')titless=re.sub('\s',',',title)tag_list=title.replace('、',','......
  • excel对比两个文档,判断范围内的取值是否在另一个列表内存在(vlookup函数的使用)
    背景:sheet1表为原始数据:sheet2表为新的数据副本,目标是查询sheet2列表中是否存在sheet1表的数据,并且标记出来,且获取sheet2列表的一些数据至sheet1列表中,补充D与E两列的数据情况: 一、vlookup函数介绍:作用:垂直查找(按列号查找)函数说明:vlookup(lookup_value,table_array,col_......
  • 什么是指针碰撞?什么是空闲列表?
    内存分配有两种方式,指针碰撞(BumpThePointer)、空闲列表(FreeList)。指针碰撞:假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离,这......
  • 无涯教程-Dart - Lists(列表)
    array是编程中非常常用的集合,Dart以List对象的形式表示数组,列表只是一组有序的象。dart:core库提供了List类,该类允许创建和操作列表。Dart中列表的逻辑表示如下-固定长度列表固定长度列表的长度不能在运行时更改,创建固定长度列表的语法如下:步骤1  - 声明列表下......
  • redis删除列表元素
    如何实现Redis删除列表元素引言在使用Redis时,经常会遇到需要删除列表中的元素的情况。本文将介绍如何使用Redis命令实现删除列表元素的操作,并提供详细的步骤和代码示例来帮助刚入行的开发者理解和掌握这个过程。整体流程删除Redis列表中的元素通常需要以下几个步骤:连接到Redi......
  • 列表推导式
    1、最简单的[表达式for变量in列表][out_exp_resforout_expininput_list]>>>names=['Bob','Tom','alice','Jerry','Wendy','Smith']>>>new_names=[name.upper()fornameinnamesifl......