PYTHON框架之DJANGO学习笔记(十四)

Django框架基础教程(一):简单介绍Python Django框架 Django框架基础(一):简单介绍Python Django框架,从零开始学Django框架。 1、Django简介 Python下有多款不同的 Web 框架,Django是最有代表性的一种。许多成功的网站和APP都基于Django。 Django是一个开源的Web应用框架,例如舆管家数据监测平台由Python写成。 Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。 ... 阅读详情

Django站点管理(续·完)

  本想昨天更新的,谁曾想昨天竟然是工作日!我就不吐槽昨天加班到十一点多了,需求增加无疑让我等蛋疼不已,忽而想起一首打油诗:

明月几时有,把酒问群友。不知这次版本,今晚能出否。我欲推倒重构,又恐项目经理,深夜对我吼。增删改代码,好像没保存…

深呼吸,看屏幕,泪在流。不应有恨,谁没忘记存代码?人有悲欢离合,码有丢失冲突,此事古难全。但愿人长久,leader别发现。

  废话少说,进入今天的正题,Django站点管理学习开始。

自定义列表

  让我们更深一步:自定义Author模块的列表中的显示字段。 列表默认地显示查询结果中对象的__unicode__()。  

复制代码
1 class Author(models.Model):
2     first_name = models.CharField(max_length=30)
3     last_name = models.CharField(max_length=40)
4     email = models.EmailField(blank=True, verbose_name='e-mail')
5 
6     **def __unicode__(self):**
7         **return u'%s %s' % (self.first_name, self.last_name)**
复制代码

   PS:星号内的部分为更改新增部分,后面不再赘述。

  改动完成后,效果如下:

Screenshot of the author change list page.

  我们可以在这基础上改进,添加其它字段,从而改变列表的显示。 这个页面应该提供便利,比如说:在这个列表中可以看到作者的邮箱地址。如果能按照姓氏或名字来排序,那就更好了。

  为了达到这个目的,我们将为Author模块定义一个ModelAdmin类。 这个类是自定义管理工具的关键,其中最基本的一件事情是允许你指定列表中的字段。 打开admin.py并修改: 

复制代码
1 from django.contrib import admin
2 from books.models import Publisher, Author, Book
3 
4 **class AuthorAdmin(admin.ModelAdmin):**
5     **list_display = ('first_name', 'last_name', 'email')**
6 
7 admin.site.register(Publisher)
8 **admin.site.register(Author, AuthorAdmin)**
9 admin.site.register(Book)
复制代码

  唠叨一下代码:

  首先,新建了一个类AuthorAdmin,它是从django.contrib.admin.ModelAdmin派生出来的子类,保存着一个类的自定义配置,以供管理工具使用。 我们只自定义了一项:list_display, 它是一个字段名称的元组,用于列表显示。 当然,这些字段名称必须是模块中有的。

  然后,我们修改了admin.site.register()调用,在Author后面添加了AuthorAdmin。你可以这样理解: 用AuthorAdmin选项注册Author模块。

  最后,admin.site.register()函数接受一个ModelAdmin子类作为第二个参数。 如果你忽略第二个参数,Django将使用默认的选项。Publisher和Book的注册就属于这种情况。]

  弄好了这个东东,再刷新author列表页面,你会看到列表中有三列:姓氏、名字和邮箱地址。 另外,点击每个列的列头可以对那列进行排序。效果图如下所示:

  Screenshot of the author change list page after list_display.

  接下来,让我们添加一个快速查询栏。 向AuthorAdmin追加search_fields,如: 

1 class AuthorAdmin(admin.ModelAdmin):
2     list_display = ('first_name', 'last_name', 'email')
3     **search_fields = ('first_name', 'last_name')**

 

  刷新浏览器,你会在页面顶端看到一个查询栏。 (见图6-9.)我们刚才所作的修改列表页面,添加了一个根据姓名查询的查询框。 正如用户所希望的那样,它是大小写敏感,并且对两个字段检索的查询框。如果查询"bar",那么名字中含有Barney和姓氏中含有Hobarson的作者记录将被检索出来。

  Screenshot of the author change list page after search_fields.

  多创建几条数据玩玩检索。

  接下来,让我们为Book列表页添加一些过滤器。 

复制代码
 1 from django.contrib import admin
 2 from books.models import Publisher, Author, Book
 3 
 4 class AuthorAdmin(admin.ModelAdmin):
 5     list_display = ('first_name', 'last_name', 'email')
 6     search_fields = ('first_name', 'last_name')
 7 
 8 **class BookAdmin(admin.ModelAdmin):**
 9     **list_display = ('title', 'publisher', 'publication_date')**
10     **list_filter = ('publication_date',)**
11 
12 admin.site.register(Publisher)
13 admin.site.register(Author, AuthorAdmin)
14 **admin.site.register(Book, BookAdmin)**
复制代码

 

  由于我们要处理一系列选项,因此我们创建了一个单独的ModelAdmin类:BookAdmin。首先,我们定义一个list_display,以使得页面好看些。 然后,我们用list_filter这个字段元组创建过滤器,它位于列表页面的右边。 Django为日期型字段提供了快捷过滤方式,它包含:今天、过往七天、当月和今年。这些是开发人员经常用到的。

自定义编辑表单

  正如自定义列表那样,编辑表单多方面也能自定义。

  首先,我们先自定义字段顺序。 默认地,表单中的字段顺序是与模块中定义是一致的。 我们可以通过使用ModelAdmin子类中的fields选项来改变它: 

1 class BookAdmin(admin.ModelAdmin):
2     list_display = ('title', 'publisher', 'publication_date')
3     list_filter = ('publication_date',)
4     date_hierarchy = 'publication_date'
5     ordering = ('-publication_date',)
6     **fields = ('title', 'authors', 'publisher', 'publication_date')**

 

  完成之后,编辑表单将按照指定的顺序显示各字段。 它看起来自然多了——作者排在书名之后。 字段顺序当然是与数据条目录入顺序有关, 每个表单都不一样。

  通过fields这个选项,你可以排除一些不想被其他人编辑的fields 只要不选上不想被编辑的field(s)即可。 当你的admi用户只是被信任可以更改你的某一部分数据时,或者,你的数据被一些外部的程序自动处理而改变了了,你就可以用这个功能。 例如,在book数据库中,我们可以隐藏publication_date,以防止它被编辑。

1 class BookAdmin(admin.ModelAdmin):
2     list_display = ('title', 'publisher', 'publication_date')
3     list_filter = ('publication_date',)
4     date_hierarchy = 'publication_date'
5     ordering = ('-publication_date',)
6     **fields = ('title', 'authors', 'publisher')**

 

  这样,在编辑页面就无法对publication date进行改动。 如果你是一个编辑,不希望作者推迟出版日期的话,这个功能就很有用。

  当一个用户用这个不包含完整信息的表单添加一本新书时,Django会简单地将publication_date设置为None,以确保这个字段满足null=True的条件。

  另一个常用的编辑页面自定义是针对多对多字段的。 真如我们在book编辑页面看到的那样,`` 多对多字段`` 被展现成多选框。虽然多选框在逻辑上是最适合的HTML控件,但它却不那么好用。 如果你想选择多项,你必须还要按下Ctrl键(苹果机是command键)。 虽然管理工具因此添加了注释(help_text),但是当它有几百个选项时,它依然显得笨拙。

  更好的办法是使用filter_horizontal。让我们把它添加到BookAdmin中,然后看看它的效果。

1 class BookAdmin(admin.ModelAdmin):
2     list_display = ('title', 'publisher', 'publication_date')
3     list_filter = ('publication_date',)
4     date_hierarchy = 'publication_date'
5     ordering = ('-publication_date',)
6     **filter_horizontal = ('authors',)**

 

  刷新book编辑页面,你会看到Author区中有一个精巧的JavaScript过滤器,它允许你检索选项,然后将选中的authors从Available框移到Chosen框,还可以移回来。界面图如下:

  

Screenshot of the book edit form after adding filter_horizontal.

  强烈建议针对那些拥有十个以上选项 多对多字段使用filter_horizontal。 这比多选框好用多了。 你可以在多个字段上使用filter_horizontal,只需在这个元组中指定每个字段的名字。

  ModelAdmin类还支持filter_vertical选项。 它像filter_horizontal那样工作,除了控件都是垂直排列,而不是水平排列的。 至于使用哪个,只是个人喜好问题。

  filter_horizontal和filter_vertical选项只能用在多对多字段 上, 而不能用于 ForeignKey字段。 默认地,管理工具使用“ 下拉框” 来展现 外键字段。但是,正如多对多字段 那样,有时候你不想忍受因装载并显示这些选项而产生的大量开销。 例如,我们的book数据库膨胀到拥有数千条publishers的记录,以致于book的添加页面装载时间较久,因为它必须把每一个publishe都装载并显示在下拉框中。

  解决这个问题的办法是使用“raw_id_fields” 选项。它是一个包含外键字段名称的元组,它包含的字段将被展现成"文本框" ,而不再是" 下拉框" 。效果如下:

复制代码
1 class BookAdmin(admin.ModelAdmin):
2     list_display = ('title', 'publisher', 'publication_date')
3     list_filter = ('publication_date',)
4     date_hierarchy = 'publication_date'
5     ordering = ('-publication_date',)
6     filter_horizontal = ('authors',)
7     **raw_id_fields = ('publisher',)**
复制代码

 

  Screenshot of edit form after raw_id_fields.

  在这个输入框中,你输入什么呢? publisher的数据库ID号。 考虑到人们通常不会记住这些数据库ID,管理工具提供了一个放大镜图标方便你输入。点击那个图标将会弹出一个窗口,在那里你可以选择想要添加的publishe。

  至此,Django的管理站点学习完毕。今天又是补新番又是写博客,一会还要写另一个项目的详设,不多说,先睡一觉再说。

Python3搭建Django框架详解       最近在学习python语言,学过python的都知道Django是python web项目中比较好的一个框架,于是我也就去研究了一下,在这里把搭建步骤和遇到的问题给大家分享一下,有什么地方不明吧的也可以加关注我们一起讨论学习。Django框架搭建步骤如下: 1.首先,你需要安装Python环境,我本机是安装的Python3.6.4;以及我们要用的Django,我这里安装的是最新的版本是... 阅读详情

相关推荐

Python Web 框架中 Django 框架

Django是一个高级的Python Web 框架,他鼓励快速开发和干净、使用的设计。Django遵循MVC(模型-视图-模板)设计模式,旨在帮助开发者以更少的代码完成更多的工作。它提供了很多内置的功能,比如用户认证,内容管理等,非常适合快速开发数据库驱动的网站。

bo_bo001的博客 1940

python——Django 框架

根据书籍表结构设计模型类:模型类:BookInfo书籍名称字段:name根据人物表结构设计模型类:模型类:PeopleInfo人物姓名字段:name人物性别字段:gender外键约束:book外键要指定所属的模型类说明 :书籍-人物的关系为一对多. 一本书中可以有多个英雄.不需要定义主键字段, 在生成表时会自动添加, 并且值为自增长.根据数据库表的设计在models.py中定义模型类,继承自'''1.定义模型类2.模型迁移。

weixin_64672480的博客 2万+

十四、Django框架使用

Django是劳伦斯出版集团的开发人员为开发新闻内容网站而设计出来的一个软件,它遵循MVC思想,但是有自己的一个名词,叫做MVT。Django遵循快速开发和DRY原则。Do not repeat yourself.不要自己去重复一些工作。它提供了许多有用的工具和功能,使开发者能够轻松地构建高度可拓展、安全、高性能的 Web 应用。强大的路由系统:Django 提供了易于配置和管理 URL 路由的功能,使开发者能够定义页面和应用程序的 URL 映射。

热爱不止,前行不息 1605

Python框架——最详细的Django框架入门

Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!采用了MVC的框架模式,即模型M,视图V和控制器C,也可以称为MVT模式,模型M,视图V,模板T。在学习Django的过程中将学到的知识进行总结分享出来,温故而知新,如果能帮助到想学Django但不知道如何开始的同学是再好不过了。随着我们项目的积累,有时候不同项目需要用不到不同版本的包,可能会产生冲突,这时候我们需要一个虚拟环境将每个项目需要的包进行独立,这样就能有效避免冲突。...

大模型教程的博客 4万+

【Python】Django 框架

在我们输入 这行看似开启一切的命令之前,我们必须先回答一个根本性的问题:Django 究竟是什么?答案很简单:它是一个用 Python 语言编写的 Web 框架。但这个答案也引出了一个更深层次的问题:Python 又是什么?对于绝大多数开发者而言,Python 是一门动态、高级、解释型的语言。我们享受其简洁的语法、丰富的库和强大的表达能力。但这些特性并非凭空而来,它们构建于一个坚实而复杂的底层基础之上。我们日常使用的标准 Python 解释器,被称为 CPython,它的核心——从内存管理到对象模型,从类

宅男很神经 1592

一步到位Python Django部署,浅谈Python Django框架

Django是一个遵循MVC(Model-View-Controller)体系结构的Web框架,旨在帮助开发人员更快、更轻松地构建和维护高质量的Web应用程序。它是用Python编写的,具有简单的语法和丰富的功能。

kelai_6792的博客 1386

python——Django框架

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

m0_65995252的博客 7070

从FinFET到GAA:手把手解读2nm芯片制造的关键技术(含BSPDN避坑指南)

本文深入解读了2nm芯片制造从FinFET向全环绕栅极(GAA)晶体管架构演进的核心技术,并重点剖析了背面供电网络(BSPDN)的三种实现路径及其工程挑战。文章旨在帮助工程师理解技术变革的内在逻辑,并为应对2nm节点设计中的关键问题提供实用指南。

weixin_29294975的博客 296

基于Django的Python应用——学习笔记

打开learning_logs/models.py建立两个模型# """用户学习的主题"""# """返回模型的字符串表示""""""学到的有关某个主题的具体知识""""""返回模型的字符串表示"""

weixin_55731208的博客 2845

保姆级教程:用Protege 5.5.0从零构建你的第一个知识图谱(附实战案例文件)

本文提供了一份详细的Protege 5.5.0使用指南,从零开始构建知识图谱。涵盖环境配置、本体结构设计、实例填充到可视化展示的全流程,特别适合初学者快速掌握知识建模技术。通过实战案例演示,帮助读者理解如何定义类、属性及建立实例关系,是学习知识图谱构建的实用教程。

weixin_42548816的博客 555

LSTM cell结构的理解和计算

LSTM是传统RNN网络的扩展,其核心结构是其cell单元,网上LSTM的相关资料繁多,质量参差不齐,下面主要结合LSTM神经网络的详细推导和 Christopher Olah的blog两篇文章中的内容进行说明。主要介绍网络如何计算,为何这么算先不展开:)。前者一副图加上29个公式,简洁明了;后者娓娓道来,适合初学者。首先是LSTM cell最常见的结构图: 这是变形的版本(找不到更清晰的版本了),

songhk0209的博客 2万+

Python框架篇之Django(Django项目搭建全过程、Web框架与Django)

文章目录一、Web框架与Django本质二、从安装到实现一个完整的Django项目 一、Web框架与Django本质 1、Web框架的理解 框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统。对于所有的Web应用,实际上就是一个socket服务端,用户的浏览器其实就是一个socket客户端。 2、Django的本质 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。简单来说,就是Django给我

Viewinfinitely的博客 1万+

YOLOv8缺陷检测可视化界面实战:PyQt5布局设计与代码实现

本文详细介绍了如何利用PyQt5为YOLOv8缺陷检测模型构建一个专业、易用的可视化界面。通过实战讲解PyQt5的布局管理器设计、信号槽机制与YOLOv8核心的集成,帮助开发者快速将AI模型部署为直观的桌面应用,提升工业质检等场景的落地效率。

redis7keeper的博客 758

Python学习笔记(八)--Django框架

框架就是程序的骨架,主体结构,也是个半成品。模型是项目中的数据信息源,它包含着储存数据的必要字段和行为。通常,每个模型对应数据库中的一张表,每个属性对应一个字段。每个模型都是django.db.models.Model的一个Python子类。Django提供一套自动生成的用于数据库访问的API;模型与数据库的关系是ORM关系(对象--关系--映射)。

hongjian006的博客 1243

lp–mspm0g3507开发板进入低功耗模式怎么退出?烧程序烧着烧着就进来了,跳线帽没动过,且报错:Texas Instruments Debugger Error: DAP Co...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1571

提示词驱动的智能合同生成与审核

第1章:核心概念与背景 1.1.1 问题背景 1.1.1.1 合同生成与审核的需求 合同作为商业和法律领域中的基本工具,其生成和审核过程至关重要。传统的合同生成往往依赖于法律专业人士的手工撰写,这不仅耗时耗力,而且容易出现错误。此外,合

AI天才研究院 1002

Python Django框架

Django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作。设计类:模型类ORM另一个作用:根据设计的类生成数据库中的表。

wangbo_angel的博客 2103

路径规划 | 图解A*、Dijkstra、GBFS算法的异同(附C++/Python/Matlab仿真)

图解A*、Dijkstra、GBFS算法原理,分析三种算法异同,提供C++/Python/Matlab仿真实现

FRIGIDWINTER的博客 2万+

【Django框架学习笔记】超详细的Python后端开发Django框架学习笔记

详细介绍了Python后端开发Django框架知识点,包括路由中间件,前后端交互等等

m0_67844671的博客 1664

【图像超分】论文精读:Accelerating the Super-Resolution Convolutional Neural Network(FSRCNN)

作为应用于图像超分辨率 (SR) 的成功深度模型,超分辨率卷积神经网络 (SRCNN) [1,2] 在速度和恢复质量方面都比以前的手工制作的模型表现出更好的性能。然而,高计算成本仍然阻碍了它的实际使用,这需要实时性能(24 fps)。在本文中,我们旨在加速当前的 SRCNN,并提出了一种紧凑的沙漏形 CNN 结构,以实现更快和更好的 SR。我们从两个方面重新设计了SRCNN结构。首先,我们在网络末端引入了一个反卷积层,然后将映射直接从原始低分辨率图像(无插值)学习到高分辨率图像。其次,我们通过在映射之前缩小

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 工作经验——一次简单的Maven加速构建实战
下一篇: Android ContentProvider介绍
lin91o7c
博客等级 码龄12年 1粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值