Django框架学习(四)

简介: Django框架学习(四)
# 设置Django运行所依赖的环境变量
import os
if not os.environ.get("DJANGO_SETTINGS_MODULE"):
    os.environ.setdefault('DJANGO_SETTINGS_MODULE','demo.settings')
# 让Django进行一次初始化
import django
django.setup()
from booktest.models import BookInfo,HeroInfo
if __name__ == '__main__':
    # 条件查询

我们如果是想在文件中直接运行,进行数据库的查询操作,可以按上面的步骤进行设置。并且在定义模型类的时候重写str方法(操作如下)。然后就可以进行查询了。

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20,verbose_name='标题')
    bpub_date = models.DateField(verbose_name='出版日期')
    bread = models.IntegerField(default=0,verbose_name='阅读量')
    bcomment = models.IntegerField(default=0,verbose_name='评论量')
    is_delete = models.BooleanField(default=False,verbose_name='删除标记')
    class Meta:
        db_table = 'tb_books'
    def __str__(self):
        return self.btitle

1.数据库查询

模型类.objects.查询函数

1.1查询相关参数

all没有参数

get可以写查询条件,查询满足条件一条且只能有一条数据

filter可以写查询条件,查询的是满足条件的数据

exclude可以写查询条件,返回的是不满足条件的所有数据

order_by是排序,参数是排序字段

aggregate聚合,参数是聚合类,返回的是一个字典

count没有参数,返回查询结果的数量,返回是一个数字

1.2条件查询

注意:可以写多个查询条件,默认是且的关系

对应get,filter,exclude参数中可以写查询条件

格式:属性名__条件名=值

1.3F对象

用于查询时字段之间的比较

from django.db.models import F

1.4Q对象

用于查询时条件之间的逻辑关系

from django.db.models import Q

与&

或|

非~

1.5聚合

聚合类

from django.db.models import Count, Sum,Avg,Max,Min

aggregate

1.6排序

默认是升序,如果想要降序,在查询字段前写减号。

order_by

1.7关联查询

1、查询和指定对象关联的数据(重点掌握)

由一查多:一对象.多类名小写__set.all()

由多查一:多对象.外键属性

2、通过模型类进行关联查询

查图书:一类.objects.get|filter(多类名__字段__条件=值)

查英雄:多类.objects.filter(外键属性__字段__条件=值)

2.查询集

注意:对于queryset类的对象,可以继续调用之前的任何一个查询函数。

all,filter,exclude,order_by这四个函数返回的是查询集对象

例如:查询id大于3的图书数量

BookInfo.objects.filter(id__gt=3).count()

exists:判断查询集中是否有数据。True代表有,False代表没有。

两大特性

1、惰性查询:只有在使用查询集中的数据时才会进行数据库真正查询操作

2、查询结果的缓存:如果使用同一个查询集时,只有在第一次使用查询集时会进行数据库的查询操作,然后Django框架就会把查询的结果存起来,下一次再使用这个查询集的时候,使用的是Django之前存储的结果。

特点:可以向list列表一样进行操作,可以遍历,可以取下标,可以切片,但是切片的时候下标不允许为负数。

注意和特点重点掌握,其他的了解一下就可以了。

3.admin站点

Django框架提供了一个admin站点,可以让用户来管理网站的数据表的内容。

3.1使用

1.语言和时区的本地化

2.创建管理员用户

python manage.py createsuperuser

3.在admin.py中注册模型类

4.自定义admin站点管理页面

1)在admin.py中定义模型admin的管理类,继承于admin.ModelAdmin

2)admin.site.register(模型类,admin管理类)

3)在Admin管理类中通过对应的类属性控制admin界面内容

3.2图片上传

Django自带文件存储系统,可以直接通过admin站点进行图片的上传,默认上传的文件保存在服务器本地。

使用

1、在配置文件中设置配置项MEDIA_ROOT=‘上传文件的保存目录’

2、定义模型类时,图片字段的类型使用’imageField’

3、迁移生成表,并在admin.py注册模型类,直接登录admin站点就可以进行图片上传。

注意:在迁移生成表的时候,我们有可能碰到一个错误:

django.db.utils.InternalError: (1050, "Table 'tb_books' already exists")

这个错误发生,是因为我们删除过数据库里面的表格,我们需要执行以下下面的操作:

# 先进入我们的数据库,然后选择这个表
select * from django_migrations;
# 将我们的迁移过的文件加到这张表里,我们在迁移文件生成表的时候就不会出现这个错误了。里面的name是我们的迁移文件,app时我们的子应用名,时间时随便填,但是要符合格式。
insert into django_migrations(id,app,name,applied) values(15,'booktest','0001_initial','2019-01-17 07:29:10.391789');

django_migrations这张表记录的是哪个子应用下,哪个迁移文件被迁移过,一旦被迁移过就不再被迁移了。

相关文章
|
30天前
|
数据采集 中间件 Python
如何在Django框架中进行输入验证和过滤?
通过综合运用这些方法,可以在 Django 框架中有效地进行输入验证和过滤,提高应用的安全性和数据质量。同时,还可以根据具体的业务需求进一步扩展和定制验证逻辑。
108 64
|
2月前
|
开发者 数据库管理 Python
Django框架和Flask框架的区别
总体而言,Django 适合需要快速搭建大型应用的开发者,而 Flask 则更适合有特定需求和追求灵活性的开发者。
123 64
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
194 45
|
30天前
|
监控 安全 测试技术
Django框架的表单验证和过滤机制是否可以应对复杂的安全场景?
综上所述,Django 框架的表单验证和过滤机制在一定程度上可以应对复杂的安全场景,但需要综合运用多种手段来进一步提升安全性,以适应不断变化的安全挑战。
32 1
|
2月前
|
搜索推荐 API 开发者
Django框架和Flask框架的适用场景分别是什么?
总体而言,Django 更适合需要全面功能和大规模开发的场景,而 Flask 则更适合灵活性要求高、小型项目或特定需求的开发。当然,具体的选择还应根据项目的具体情况、团队的技术能力和偏好等因素来综合考虑。在实际应用中,开发者可以根据项目的特点和需求,灵活选择使用这两个框架,或者结合它们的优势来构建更强大的 Web 应用程序。
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
安全 前端开发 数据库
Django框架
总的来说,Django 是一个非常优秀的 Web 框架,它为开发者提供了坚实的基础和丰富的功能,使得构建高质量的 Web 应用变得更加容易和高效。无论是初学者还是经验丰富的开发者,都可以从中受益,利用它来实现自己的创意和想法。
51 4
|
2月前
|
Python
Django 框架的路由系统
Django 框架的路由系统
52 6
|
2月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
70 2
|
3月前
|
SQL Java 数据库
Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。
这篇文章是关于如何使用Django框架的ORM系统在视图(views)层面进行数据库的增、删、改、查操作的教程。
26 0
Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。