django book 2.0 阅读笔记-django站点管理

本文介绍了Django自动管理工具的配置方法,包括如何启用管理界面、定制管理界面的外观和功能,以及如何通过模型和视图自定义字段展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django的自动管理界面:

Django自动管理工具(django.contrib.admin)是django.contrib的一部分。Django自带很多优秀的附加组件,它们都存在于django.contrib包里。

自动管理界面的访问:

  1. 确保你的settings.py的INSTALLED_APPS配置中包含:‘django.contrib.admin’,‘django.contrib.auth’,‘django.contrib.contenttypes’和’django.contrib.sessions’。
    MIDDLEWARE_CLASSES 包含’django.middleware.common.CommonMiddleware’,‘django.contrib.sessions.middleware.SessionMiddleware’和’django.contrib.auth.middleware.AuthenticationMiddleware’ 。
  2. 生成管理界面使用的额外数据库表
    • 先执行python manage.py makemigrations
    • 再执行python manage.py migrate
    • 最后执行python manage.py createsuperuser,输入用户名,邮箱和密码
  3. 将admin访问配置在URLconf(记住,在urls.py中).
    默认情况下,命令django-admin.py startproject生成的文件urls.py是将Django admin的路径注释掉的,你所要做的就是取消urlpatterns变量下面关于admin路径的注释
  4. 运行开发服务器:
python ../manage.py runserver
  1. 在浏览器中访问:http://127.0.0.1:8000/admin/
  2. 使用你原来设置的超级用户的用户名和密码进行登陆
  3. 更改页面语言:
    在settings.py设置LANGUAGE_CODE = ‘zh-hans’;时区TIME_ZONE = ‘Asia/Shanghai’ 。

将Models加入到Admin管理中:

在生成的books目录下面,更改admin.py文件为:

from django.contrib import admin
from mysite.books.models import Publisher, Author, Book

admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)

然后刷新http://127.0.0.1:8000/admin/,会看到一个Books区域,其中包含Authors、Books和Publishers。打开Publishers也可以看到我们之前在数据库中增加的条目

Admin是如何工作的?

属性层面的更改:
  1. 设置字段可选:
  • 字符型字段:
class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True)//表示该字段可选

  • 日期和数值型字段:
class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE,)
    publication_date = models.DateField(blank=True, null=True)//说起来有点复杂,如果想让日期字段或数值字段接受空值,则要同时添加blank=True, null=True。字符字段则不用。
    //注意:如果此时的null=true是之后加的,务必使用python ../manage.py makemigrations 和python ../manage.py migrate来进行更新数据库。
  1. 自定义字段标签:
    编辑界面一般会对数据库中的属性标签进行更改:用空格替换下划线;首字母大写。但你也可以在模块中指定verbose_name自定义一个标签。
class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email = models.EmailField(blank=True, verbose_name='e-mail' )
模板层面的更改:
  1. AuthorAdmin类的使用:
    为Author模块定义一个AuthorAdmin类,来自定义管理Author列表。打开admin.py文件:
from django.contrib import admin
from books.models import Publisher, Author, Book

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'email')//添加的语句


admin.site.register(Publisher)
admin.site.register(Author,AuthorAdmin)//这里不要漏加了
admin.site.register(Book

更新完毕可能需要重新启动服务器。

我们还可以给AuthorAdmin追加search_fields,来添加一个快速查询栏:

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'email')
    search_fields = ('first_name', 'last_name')
  1. BookAdmin类的使用:
  • 过滤器的使用
    照猫画虎: list_filter用来创建过滤器,该过滤器位于列表页面的右边。
from django.contrib import admin
from mysite.books.models import Publisher, Author, Book

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

class BookAdmin(admin.ModelAdmin):
   list_display = ('title', 'publisher', 'publication_date')
   list_filter = ('publication_date',)//逗号不能少啊啊啊啊啊啊啊啊啊,变量名别搞错啊啊啊这里是过滤器。

admin.site.register(Publisher)
admin.site.register(Author, AuthorAdmin)
admin.site.register(Book, BookAdmin)

还有一种过滤日期的方式,用date_hierarchy选项,表现在页面列表顶有一个逐层深入的导航条。注意此时数据里面存在date时才会显示。

class BookAdmin(admin.ModelAdmin):
   list_display = ('title', 'publisher', 'publication_date')
   list_filter = ('publication_date',)
   date_hierarchy = 'publication_date'
   ordering = ('-publication_date',)//按publication date降序排列,注意页面上的Publication date列头现在有一个小箭头显示排序
  • 模型内自定义字段顺序及隐藏:
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'publisher', 'publication_date')
    list_filter = ('publication_date',)
    date_hierarchy = 'publication_date'
    ordering = ('-publication_date',)
    fields = ('title', 'authors', 'publisher')//自定义表单,这里隐藏了publication_date,防止它被编辑
  • 编辑菜单自定义多对多字段
    books编辑页面"多对多字段"作者被展现成多选框,当有几百个作者的选项时,会很糟糕。而且,虽然下面有注释,但是选择多个作者很不方便。现在使用filter_horizontal改进,可以在多对多的选择上添加一个精巧的JS过滤器
class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'publisher', 'publication_date')
    list_filter = ('publication_date',)
    date_hierarchy = 'publication_date'
    ordering = ('-publication_date',)
    filter_horizontal = ('authors',)// filter_vertical功能相同,只是控件垂直放置了而已。
  • 编辑菜单自定义外键的修改
    filter_horizontal和filter_vertical选项只能用在多对多字段 上, 而不能用于 ForeignKey字段。
    解决这个问题的办法是使用raw_id_fields 选项。它是一个包含外键字段名称的元组,它包含的字段将被展现成文本框 ,而不再是下拉框
    点"放大镜"图标就可以打开一个新的页面来显示外键。

总结:

Django的管理界面对非技术用户要输入他们的数据时特别有用;事实上这个特性就是专门为这个 实现的

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值