Django其他(站点、列表、上传

1.静态文件:

  • 项目中的CSS、图片、js都是静态文件
  • 一般会将静态文件放到一个单独的目录中,以方便管理
  • 在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径
  • 静态文件可以放在项目根目录下,也可以放在应用的目录下,由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理

 

1.在项目/settings.py文件中定义静态文件查找路径

STATIC_URL ='/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static'),
]

 

2.在项目根目录下创建static目录,再创建img、css、js目录

 

3.在应用名称booktest/views.py中定义视图jingtai

defjingtai(request):
    returnrender(request,'booktest/jingtai.html')

4.在booktest/urls.py中配置url

    url(r'^jingtai/$',views.jingtai),

5.在templates/booktest/下创建jingtai.html文件

 

动态配置:
{%load static from staticfiles%}
<img src="{%static "img/sg.png" %}"/>

 

 1.问题一:django如何确定当前请求静态文件?

    http://127.0.0.1:8000/static/images/bjt.png

   答:请求路径/static/images/bjt.png中开始的部分/static/

   settings.pySTATIC_URL进行对比,如果相同则认为是静态文件

 

   2. 问题二:在磁盘的哪个目录下找静态文件?

   答:判断后剩下路径images/bjt.png

   方案一:与settings.py中的STATICFILES_DIRS进行拼接

   方案二:在应用目录下的static目录下查找

 

 

2.中间件

  • Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出
  • 中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性,其它的MVC框架也有这个功能,名称为IoC
  • Django在中间件中常用方法不同的阶段执行:
  • process_request
  • process_view
  • process_response

 

 1.问题一:什么时候使用中间件?

    答:当大部分的视图中都需要执行一段相同代码时

 

    2.问题二:怎么用?

    答:定义类,选择函数,安装

 

    3.问题三:使用哪个函数呢?

    答:根据代码的执行时间来判断

 

 

 

3.Admin站点

  • 内容发布的部分由网站的管理员负责查看、添加、修改、删除数据,开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块
  • 在Django项目中默认启用Admin管理站点

 

1.准备工作:创建管理员的用户名和密码:

python manage.pycreatesuperuser

 

  • 2.按提示填写用户名、邮箱、密码

 

  • 3.使用:在应用的admin.py中注册模型类

fromdjango.contrib import admin
from models import *

admin.site.register(AreaInfo)

  • 4.输入如下网址

http://127.0.0.1:8000/admin/

  • 5.按提示填写用户名、密码,点击“Log in”按钮登录

 

管理类有两种使用方式

  • 1.注册参数:打开booktest/admin.py文件,注册模型类代码如下

admin.site.register(AreaInfo,AreaAdmin)

  • 2.装饰器:打开booktest/admin.py文件,在管理类上注册模型类,代码如下

@admin.register(AreaInfo)
class AreaAdmin(admin.ModelAdmin):
    pass

 

列表页选项

页大小

  • 每页中显示多少条数据,默认为每页显示100条数据,属性如下

list_per_page=100

 

“操作选项”的位置

  • 顶部显示的属性,设置为True在顶部显示,设置为False不在顶部显示,默认为True

actions_on_top=True

 

列表中的列

  • 属性如下

list_display=[模型字段1,模型字段2,...]

 

将方法作为列

  • 列可以是模型字段,还可以是模型方法,要求方法有返回值
  • 打开booktest/models.py文件,修改AreaInfo类如下

classAreaInfo(models.Model):
    ...
    def title(self):
        return self.atitle

  • 打开booktest/admin.py文件,修改AreaAdmin类如下

classAreaAdmin(admin.ModelAdmin):
    ...
  
 list_display = ['id','atitle','title']

 

  • 方法列是不能排序的,如果需要排序需要为方法指定排序依据

admin_order_field=模型类字段

 

列标题

  • 列标题默认为属性或方法的名称,可以通过属性设置
  • 需要先将模型字段封装成方法,再对方法使用这个属性,模型字段不能直接使用这个属性

short_description='列标题'

 

关联对象

  • 无法直接访问关联对象的属性或方法,可以在模型类中封装方法,访问关联对象的成员
  • 打开booktest/models.py文件,修改AreaInfo类如下

classAreaInfo(models.Model):
    ...
    def parent(self):
        return self.aParent.atitle
  
 parent.short_description='父级区域名称'

 

右侧栏过滤器

  • 属性如下,只能接收字段,会将对应字段的值列出来,用于快速过滤

list_filter=[]

 

搜索框

  • 属性如下,用于对指定字段的值进行搜索,支持模糊查询

search_fields=[]

 

中文标题

  • 打开booktest/models.py文件,修改模型类,为属性指定verbose_name参数,即第一个参数

classAreaInfo(models.Model):
    atitle=models.CharField('
标题',max_length=30)#名称

 

编辑页选项

显示字段顺序

  • 属性如下

fields=[]

 

分组显示

  • 属性如下

fieldset=(
    ('
1标题',{'fields':('字段1','字段2')}),
    ('
2标题',{'fields':('字段3','字段4')}),
)

 

关联对象

  • 在一对多的关系中,可以在一端的编辑页面中编辑多端的对象,嵌入多端对象的方式包括表格、块两种
  • 类型InlineModelAdmin:表示在模型的编辑页面嵌入关联模型的编辑
  • 子类TabularInline:以表格的形式嵌入
  • 子类StackedInline:以块的形式嵌入
  • 打开booktest/admin.py文件,创建AreaStackedInline类

classAreaStackedInline(admin.StackedInline):
    model = AreaInfo#
关联子对象
    extra = 2#
额外编辑2个子对象

 

重写模板

  • 在templates/目录下创建admin目录
  • 打开当前虚拟环境中Django的目录,再向下找到admin的模板
  • 将需要更改文件拷贝到第一步建好的目录里,编辑文件

 

 

 

4.上传图片

  • 在Django中上传图片包括两种方式:
  • 1.在管理页面admin中上传图片
  • 2.自定义form表单中上传图片
  • 上传图片后,将图片存储在服务器上,然后将图片的路径存储在表中

 

在管理页面admin中上传图片

 

注册:admin.site.register(PicTest)

 

 

自定义form表单中上传图片

 

1.打开booktest/views.py文件,创建视图

  • 2.打开booktest/urls.py文件,配置url
  • 3.在templates/booktest/目录下创建模板pic_upload.html
  • 注:在模板中定义上传表单,要求如下
  •          form的属性enctype="multipart/form-data"
  •          form的method为post
  •          input的类型为file

 

5.分页

  • Django提供了数据分页的类,这些类被定义在django/core/paginator.py中
  • 对象Paginator用于对列进行一页n条数据的分页运算
  • 对象Page用于表示第m页的数据

 

Paginator对象

  • 方法init(列表,int):返回分页对象,参数为列表数据,每面数据的条数
  • 属性count:返回对象总数
  • 属性num_pages:返回页面总数
  • 属性page_range:返回页码列表,从1开始,例如[1, 2, 3, 4]
  • 方法page(m):返回Page对象,表示第m页的数据,下标以1开始

 

Page对象

  • 调用Paginator对象的page()方法返回Page对象,不需要手动构造
  • 属性object_list:返回当前页对象的列表
  • 属性number:返回当前是第几页,从1开始
  • 属性paginator:当前页对应的Paginator对象
  • 方法has_next():如果有下一页返回True
  • 方法has_previous():如果有上一页返回True
  • 方法len():返回当前页面对象的个数
  • 迭代页面对象:访问当前页面中的每个对象

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)

文章目录1. 题目2. 解题1. 题目 给你 n 个盒子&#xff0c;每个盒子的格式为 [status, candies, keys, containedBoxes] &#xff0c;其中&#xff1a; - 状态字 status[i]&#xff1a;整数&#xff0c;如果 box[i] 是开的&#xff0c;那么是 1 &#xff0c;否则是 0 。 - 糖…

给javascript初学者的24条最佳实践

1.使用 代替 JavaScript 使用2种不同的等值运算符&#xff1a;|! 和 |!&#xff0c;在比较操作中使用前者是最佳实践。 “如果两边的操作数具有相同的类型和值&#xff0c;返回true&#xff0c;!返回false。”——JavaScript&#xff1a;语言精粹 然而&#xff0c;当使用和&a…

Python面试题(二)列表去重,单例

1.Python里面如何实现tuple和list的转换python中&#xff0c;tuple和list均为内置类型&#xff0c; 以list作为参数将tuple类初始化&#xff0c;将返回tuple类型tuple([1,2,3]) #list转换为tuple以tuple作为参数将list类初始化&#xff0c;将返回list类型list((1,2,3)) #tuple转…

LeetCode 1614. 括号的最大嵌套深度

文章目录1. 题目2. 解题1. 题目 如果字符串满足一下条件之一&#xff0c;则可以称之为 有效括号字符串&#xff08;valid parentheses string&#xff0c;可以简写为 VPS&#xff09;&#xff1a; 字符串是一个空字符串 ""&#xff0c;或者是一个不为 "("…

[AngularJS]Chapter 1 AnjularJS简介

创建一个完美的Web应用程序是很令人激动的&#xff0c;但是构建这样应用的复杂度也是不可思议的。我们Angular团队的目标就是去减轻构建这样AJAX应用的复杂度。在谷歌我们经历过各种复杂的应用创建工作比如&#xff1a;GMail、Map和日历。我们认为我们有必要把这些经验总结下来…

Log4j框架配置文件

Log4j框架配置文件 1 Log4j的配置文件分类 Log4j支持两种配置文件格式&#xff1a;一中是以log4j.properties &#xff0c;另一种是 log4j.xml 2 Log4j的配置文件例子 ##自定义日志的输出级别log4j.rootLoggerWARN, stdout##自定义日志 log4j.logger.accessWARN, accesslog…

python面试总结(三)拷贝与通信

1.请写出下列结果&#xff1f;&#xff08;深拷贝与浅拷贝&#xff09; import copy a [1, 2, 3, 4, [a, b]] b a c copy.copy(a) d copy.deepcopy(a) a.append(5) a[4].append(c) print(a) print(b) print(c) print(d)# 答案如下&#xff1a; [1, 2, 3, 4, [a, b, c], 5] …

LeetCode 1615. 最大网络秩(出入度)

文章目录1. 题目2. 解题1. 题目 n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络。 每个 roads[i] [ai, bi] 都表示在城市 ai 和 bi 之间有一条双向道路。 两座不同城市构成的 城市对 的 网络秩 定义为&#xff1a;与这两座城市 直接 相连的道路总数。如果…

使用JSLint提高JS代码质量

随着富 Web 前端应用的出现&#xff0c;开发人员不得不重新审视并重视 JavaScript 语言的能力和使用&#xff0c;抛弃过去那种只靠“复制 / 粘贴”常用脚本完成简单前端任务的模式。JavaScript 语言本身是一种弱类型脚本语言&#xff0c;具有相对于 C 或 Java 语言更为松散的限…

Django工具:Git简介与基本操作

1.Git简介&#xff1a; 1.Git是目前世界上最先进的分布式版本控制系统 网址&#xff1a;http://github.com 2.总结git的两大特点&#xff1a; 版本控制&#xff1a;可以解决多人同时开发的代码问题&#xff0c;也可以解决找回历史代码的问题 分布式&#xff1a;Git是分布式…

用户画像系统应用

用户画像系统应用 1 用户信用等级分级 比如在银行根据分级决定给用户贷款的额度&#xff0c;以及贷款的时长&#xff0c;那么怎么对用户分级呢&#xff1f;首先收集大量用户的数据&#xff0c;包括基本属性信息以及用户在使用银行的借记卡&#xff0c;信用卡等等。如果是运营…

SVN或其他网盘类软件同步图标不显示的异常

因为Windows Explorer只支持15个ShellIcon显示 所以有些软件为了正常显示其同步状态&#xff0c;就会通过修改自己的ShellIcon名称来抢占这15个名额 只需在注册表中修改下他们的名称&#xff0c;并将所需要展示的Icon的名称顺序提前 重启Explorer进程即可&#xff1a; HKEY_L…

LeetCode 1616. 分割两个字符串得到回文串

文章目录1. 题目2. 解题1. 题目 给你两个字符串 a 和 b &#xff0c;它们长度相同。 请你选择一个下标&#xff0c;将两个字符串都在 相同的下标 分割开。 由 a 可以得到两个字符串&#xff1a; aprefix 和 asuffix &#xff0c;满足 a aprefix asuffix &#xff0c;同理&am…

Kafka基础

Kafka基础 1 消息队列 1.1 什么是消息队列 消息队列&#xff08;MQ&#xff09;&#xff1a;消息队列&#xff0c;保存消息的队列。消息的传输过程中的容器&#xff1b;主要提供生产、消费接口供外部调用做数据的存储和获取。 1.2 为什么要有消息队列 当网站面对教大的流量…

系统总结学习 Python 的 14 张思维导图

本文主要涵盖了 Python 编程的核心知识&#xff08;暂不包括标准库及第三方库&#xff09;。 首先&#xff0c;按顺序依次展示了以下内容的一系列思维导图&#xff1a;基础知识&#xff0c;数据类型&#xff08;数字&#xff0c;字符串&#xff0c;列表&#xff0c;元组&#x…

LeetCode 1617. 统计子树中城市之间最大距离(枚举所有可能+图的最大直径)

文章目录1. 题目2. 解题1. 题目 给你 n 个城市&#xff0c;编号为从 1 到 n 。同时给你一个大小为 n-1 的数组 edges &#xff0c;其中 edges[i] [ui, vi] 表示城市 ui 和 vi 之间有一条双向边。 题目保证任意城市之间只有唯一的一条路径。换句话说&#xff0c;所有城市形成了…

HighCharts解析之xAxis——x轴的样式

xAxis&#xff1a;x轴选项 参数 描述 默认值 allowDecimals 轴上的刻度是否允许使用小数 true alternateGridColor 当使用备用的网格颜色时&#xff0c;表格会各行变色 null categories x轴的名称。比如 categories: [Apples, Bananas, Oranges] [] dateTimeLabe…

MYSQL电脑客户端免安装教程以及出现问题解决方案

准备工作&#xff1a;window 7 64位旗舰版 MySQL 5.6.35免安装。 1. 下载MySQL 1.1 进入MySQL官网下载&#xff08;https://www.mysql.com/&#xff09;MySQL的安装包。 1.2. 根据自己电脑的位数(32位/64位)来下载响应的MySQL 、 2. 部署MySQL 2.1 解压压缩包到自己的某个盘…

Kafka高性能相关

Kafka高性能相关 1 高性能原因 1.1 高效使用磁盘 &#xff08;1&#xff09;顺序写磁盘&#xff0c;顺序写磁盘性能高于随机写内存 &#xff08;2&#xff09;Append Only 数据不更新&#xff0c;无记录级的数据删除&#xff08;只会整个segment删除&#xff09; &#xf…

Python面试总结(四)ip正则与三次握手四次挥手

1.请简述值传递和引用传递的区别&#xff1f;值传递仅仅传递的是值 引用传递&#xff0c;传递的是内存地址&#xff0c;修改后会改变内存地址对应储存的值。2.请手写一个匹配ip的正则表达式&#xff1f;第一种方法&#xff1a; ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\…