准备工作 创建管理员的用户名和密码: 1 python manage.py createsuperuser 根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...类可以控制不同模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式 上文中展示了TestAdmin类的一种注册方法,还有一种方法,就是使用装饰器注册,如下: 123 @admin.register...过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括外键字段(注意list_display...是不能直接接收外键字段的),会将对应字段的值列出来,一般用于快速过滤有重复值的字段。...我的理解就是分组整体匹配(Django3.2新增),例如,如果用户搜索 "john winston" 或 'john winston',Django 会做相当于这个 SQL 的 WHERE 子句: 1
我们可以像遍历列表一样遍历查询集。...例如, 假设你有模型Pizza和Topping,而Topping通过一个外键关联到Pizza;如果你有一个名为my_pizza 的对象,表示一张比萨,就可使用代码my_pizza.topping_set.all...我们的主页视图没有提供任何数据,因此 相应的模板非常简单。 在文件夹learning_logs中新建一个文件夹,并将其命名为templates。...在文件夹templates中,再 新建一个文件夹,并将其命名为learning_logs。...创建网页的过程看起来可能很复杂,但将URL、视图和模板分离的效果实际上很好。这让我 们能够分别考虑项目的不同方面,且在项目很大时,让各个参与者可专注于其最擅长的方面。
Django管理应用程序 Django管理应用程序可以使用的模型自动构建可用于创建、查看、更新和删除记录的站点区域。这可以在开发过程中节省大量时间,使测试模型和查看是否有正确的数据变得容易。...根据网站的类型,管理应用程序也可以用于管理生产中的数据。...为了查看和创建记录,我们还需要用户拥有所有对象的记录。可以创建一个“超级用户”帐户,该帐户具有对网站的完全访问权限和使用manage.py所需的所有权限 调用下一个命令。...向记录中添加相关字段以允许内联编辑(例如,在创建作者记录时添加添加和编辑书本记录的功能)。...可以在我们的图书详细信息中添加BookAdmin内容中的BookInstance信息。
字段还可以有各种可选参数;在本例中,我们将投票的默认值设置为 0。 最后,请注意使用外键定义了关系。这告诉 Django 每个选择都与一个问题相关。...(你也可以忽略这个。) 按照惯例,Django 会将"_id"附加到外键字段名。(是的,你也可以重写这个。) 外键关系是通过外键约束来显式的。...不要担心可延期的部分;它告诉 PostgreSQL 在事务结束之前不要强制执行外键。...因此,让我们使用 Django 的模板系统来创建视图可以使用的模板,从而将设计与 Python 分离开来。 首先,在您的轮询目录中创建一个名为 templates 的目录。...“添加选择”表单如下所示: 在该表单中,“Question”字段是一个选择框,包含数据库中的每个问题。Django 知道一个外键应该在管理中表示为一个框。在我们的例子中,目前只存在一个问题。
无名分组和有名分组反向解析 Django ORM ORM:对象映射关系程序 通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了...表与表之间的关系有一下三种: 一对多、多对多、一对一,没关系暂且排外,下面演示如何通过ORM来创建外键确立表关系~ ORM创建外键字段的位置: 一对多:创建在多的一方 一堆一:创建在任何一方都可以...,但是推荐创建在查询频率较高的表中 多对多(两种方式): 自己创建第三张表 创建在任何一方都可以,但是推荐创建在查询频率较高 # 创建书籍表 出版者表 作者表 # 先写表的基本结构,在考虑表关系如何写外键...ip和port之后的地址 在新版本Django2.x中,url的路由表示用path和re_path代替; 模块的导入由django1.x版本的from django.conf.urls import.../$',views.testadd) ] Django特性:如果在url后面写路径没有写/,那么会自动补充/,相当于跳转页面,如果不想使用该特性,可以在setting.py文件中取消:APPEND_SLASH
上传图片 当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为中的name 注意:FILES只有在请求的方法为...密码 2.在应用内admin.py文件完成注册,就可以在后台管理中维护模型的数据 from django.contrib import admin from models import * admin.site.register...(HeroInfo) 查找admin文件:在INSTALLED_APPS项中加入django.contrib.admin,Django就会自动搜索每个应用的admin模块并将其导入 ModelAdmin...True actions_on_bottom = True list_display 出现列表中显示的字段 列表类型 在列表中,可以是字段名称,也可以是方法名称,但是方法名称默认不能排序 在方法中可以使用...= [ HeroInline, ] 重写admin模板 在项目所在目录中创建templates目录,再创建一个admin目录 设置模板查找目录:修改settings.py的TEMPLATES
第八章、模板引擎设置 回顾 要显示文章标题,就要把标题从数据库中先读取出来。我们在创建BlogArticles模型时,有一个专门的title字段存储文章标题,那么怎么读取到它呢?...通过前面学习笔记, 一种是通过SQL语句进行查询 -- select语句 另一种就是通过Django自带的API进行读取,这个功能强大的API还可以创建、获取、修改和删除对象 显示文章标题 在manage.py...在使用这个HTML页面之前,我们必须告诉Django在哪里可以找到我们应用程序的模板(注:如果是利用Pycharm创建的Django项目,则会自动生成templates)。...home.html就是展示标题列表的前端页面--被称为“模板”。在每一个应用中都可以有一个专门的模板目录,这个目录的名称必须是templates。...在这里插入图片描述 可以看到,自己创建的博客文章标题已经显示在浏览器中,相信到这一步你已经激动不已(笔者也是)。
路由解析顺序 Django在接收到一个请求时,从主路由文件中的urlpatterns列表中以由上至下的顺序查找对应路由规则,如果发现规则为include包含,则再进入被包含的urls中的urlpatterns...定义在django.http.QueryDict HttpRequest对象的属性GET、POST都是QueryDict类型的对象 QueryDict类型的对象用来处理同一个键带有多个值的情况 方法get...方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值 如果键不存在则返回空列表[],可以设置默认值进行后续处理 dict.getlist(‘键’,默认值) 3)查询字符串 通过...changepassword 用户名 3、App应用配置 在settings.py中INSTALLED_APPS列表中添加此类 4、注册模型类 # 在booktest/admin.py 文件中编写代码...中显示的标题 # admin.py中: class BookInfoAdmin(admin.ModelAdmin): ...
哲理 为你的员工或客户生成添加、修改和删除内容的管理性网站是个单调乏味的工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。...你可以切换到对应的旧版本教程去或者更新到较新的 Django 版本。 进入管理网站 现在尝试登录进去。(还记得吗?在本教程的第一部分时你创建过一个超级用户的帐号。...poll 是我们在第一个教程中创建的: 点击这个”What’s up?” 的 poll 进行编辑: 这有些注意事项: 这的表单是根据 Poll 模型自动生成的。...(Poll, PollAdmin) 在 fieldsets 中每一个 tuple 的第一个元素就是 fieldset 的标题。...list_display = ('question', 'pub_date', 'was_published_recently') 现在 poll 的变更列表页看起来像这样: 你可以点击列的标题对这些值进行排序
我们使用关键字Class定义对象的‘蓝图’, # 我们可以根据类中的模型创建类型的多个特定实例...在更高级的用法中,可以使用分组命名匹配的正则表达式组来捕获URL中的值并以关键字参数形式传递给视图。 在Python的正则表达式中,分组命名正则表达式组的语法是(?...多表操作 创建模型 表和表之间的关系 一对一、多对一、多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束...# 生成表如下: 注意事项 # 表的名称myapp_modelName,是根据 模型中的元数据自动生成的,也可以覆写为别的名称 # id 字段是自动添加的 # 对于外键字段,Django 会在字段名上添加..."_id" 来创建数据库中的列名 # 这个例子中的CREATE TABLE SQL 语句使用PostgreSQL 语法格式,要注意的是Django 会根据settings 中指定的数据库类型来使用相应的
在这个表单中,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Django在admin站点中,自动地将所有的外键关系展示为一个select框。...在我们的例子中,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。每一个包含外键关系的对象都会有这个绿色加号。...点击它,会弹出一个新增Question的表单,类似Question自己的添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联外键对象。...通俗讲就是,新建一个Question并作为当前Choice的外键。 但是,实话说,这种创建方式的效率不怎么样。...接下来,在刚才创建的templates中创建一个admin目录,将admin/base_site.html模板文件拷贝到该目录内。
此函数可以接收浏览器请求并根据业务逻辑返回相应的响应内容给浏览器。...在该模式下依然存在控制层C,即主路由 Django模板层 模板层创建 模板:根据字典数据动态变化的html网页,根据视图中传递的字典数据动态生成相应的html页面 模板配置: 创建模板文件夹 ...一对一映射 创建一对一外键: 语法:OneToOneField(类名, on_delete=xxx(级联删除:在存在键的前提下的删除规则)) on_delete: models.CASCADE:级联删除...创建一对一数据 无外键的模型类,和之前相同 有外键的模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从外键查对象 反向查询:从对象查外键 调用反向属性查询到关联的一方
过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入,如此下去 {{ my_list|first|upper }} #查找列表的第一个元素并将其转化为大写。...因此,引擎将会使用我们在 { block title %} 中定义的标题,对 {% block content %} 也是如此。...当我们打印整个publisher列表时,我们没有得到想要的有用信息,只需要为Publisher对象添加一个__str__方法 ,就可以对Publisher对象更容易理解 from django.db import...超级用户标志:它赋予用户在管理界面中添加、修改和删除任何项目的权限。 如果一个用户帐号有这个标 志,那么所有权限设置(即使没有)都会被忽略。...普通的活跃,非超级用户的管理用户可以根据一套设定好的许可进入。 管理界面中每种可编辑的对象(如:books、authors、publishers)都有三种权限:创建许可,编辑许可和删除许可。
', # 这是我们新增的应用程序]确保在列表中添加 demo 这一行,并且位于其他 Django 内置应用程序的下方,这样可以确保我们的应用程序能够正确加载和运行。...这个模型将允许我们在数据库中存储图片的标题和相应的图片文件,并且可以通过Django的ORM(对象关系映射)进行管理和操作。...在这个类中,我们可以自定义模型在后台管理界面中的显示方式。在这个例子中,我们通过设置list_display属性,指定了在Image模型的列表页面中显示哪些字段。...data = Image.objects.all(): 这一行代码通过Image模型的objects管理器调用all()方法,从数据库中获取了所有的Image对象,并将它们存储在名为data的变量中。...py manage.py migrate:Django 会读取之前生成的迁移文件,并根据这些文件中的指令,在数据库中执行相应的更改,例如创建新的表、修改表结构或添加新的字段等。
:(在django中,根据代码中的类自动生成数据库的表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 类名对应------》数据库中的表名 类属性对应...通过对象的形式反向跨表:小写表名_set().all() 应用场景: 一对多:当一张表中创建一行数据时,有一个单选的下拉框(可以被重复选择) 例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户...多对多:在某表中创建一行数据是,有一个可以多选的下拉框 例如:创建用户信息,需要为用户指定多个爱好 ?...点到天荒地老 所以可以通过obj.外键.B表的列表跨表操作(注意!!...此时Django为我们提供了F和Q查询: 1、F 可以获取对象中的字段的属性(列),并对其进行操作; from django.db.models import F,Q #F 可以获取对象中的字段的属性
,其主要目的是为了封装底层SQL语句; 1、字符串类(以下都是在数据库中本质都是字符串数据类型,此类字段只是在Django自带的admin中生效) name=models.CharField(max_length...,ForeignKey字段就建在子表; 如果B表的1条记录也对应A表中N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm中设置如果 A表设置了外键字段user=models.ForeignKey...() 跨表 正操作 所以表间只要有外键关系就可以一直点下去。。。...点到天荒地老 所以可以通过obj.外键.B表的列表跨表操作(注意!!...() [userinfo对象,userinfo对象,] 小写的表名 得到有外键关系的列 #因为使用values取值取得是字典的不是对象,所以需要 小写表名(外键表)__ v = UserGroup.objects.values
os.path.join(BASE_DIR, 'static'), ] 在项目根目录下创建static目录,再创建当前应用名称的目录 mysite/static/myapp/ 在模板中可以使用硬编码...当Django在处理文件上传的时候,文件数据被保存在request.FILES FILES中的每个键为中的name 注意:FILES只有在请求的方法为...(HeroInfo) 查找admin文件:在INSTALLED_APPS项中加入django.contrib.admin,Django就会自动搜索每个应用的admin模块并将其导入 ModelAdmin...True actions_on_bottom = True list_display 出现列表中显示的字段 列表类型 在列表中,可以是字段名称,也可以是方法名称,但是方法名称默认不能排序 在方法中可以使用...在views.py中编写视图 index用于展示页面 getArea1用于返回省级数据 getArea2用于根据省、市编号返回市、区信息,格式都为字典对象 from django.shortcuts
准备工作 创建管理员的用户名和密码: 1 python manage.py createsuperuser 根据提示创建用户名 密码 在admin.py中注册模型类 1234567 from django.contrib...类可以控制不同模型在Admin界面中的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式 上文中展示了TestAdmin类的一种注册方法,还有一种方法,就是使用装饰器注册,如下: 123 @admin.register...atitle.short_description='标题' 如果是更改模型字段显示的列标题,可以在定义模型字段时,设置verbose_name的值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...,并返回所有包含这些词的对象,不区分大小写(即 icontains 查找:不区分大小写的包含匹配),其中每个词必须在 search_fields 中至少有一个。...我的理解就是分组整体匹配(Django3.2新增),例如,如果用户搜索 "john winston" 或 'john winston',Django 会做相当于这个 SQL 的 WHERE 子句: 1
如果在程序运行期间,有很多地方都需要使用配置文件的内容,也就是说,很多地方都需要创建 AppConfig 对象的实例,这就导致系统中存在多个 AppConfig 的实例对象,而这样会严重浪费内存资源,尤其是在配置文件内容很多的情况下...因此,我们只需把相关的函数和数据定义在一个模块中,就可以获得一个单例对象了。...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是外键需要遵循这样的语法:本表字段__外键表要显示的字段。...另外,可以用fields或exclude控制显示或者排除的字段,二选一即可。 例如,我想只显示标题、作者、分类标签、内容。...我们也可以在修改数据时获取保存前的数据: ? 通过change参数,可以判断是修改还是新增,同时做相应的操作。上述代码就是在替换磁盘的时候修改状态,并写入日志。
项目:基于某些设置项的Django安装结果; 应用程序:模型,视图,模版,URL的组合 应用程序和框架进行交互,并提供特定的功能,并可以在不同的项目中加以复用。...='publish') # 作者,外键 # 一个作者可以有多篇帖子 # 当作者被删除,相应的帖子也会被删除 author = models.ForeignKey(User...publish = models.DateTimeField(default=timezone.now) # 创建时间,auto_now_add:当「创建」某个对象时,日期将被自动保存...创建超级用户 Django管理站点 使用刚创建的账户进入http://127.0.0.1:8000/admin/ ?...admin 管理站点中添加模型 在blog/admin.py文件下添加 from django.contrib import admin from .models import Post admin.site.register
领取专属 10元无门槛券
手把手带您无忧上云