Django知识碎片整理(一)

本文详细介绍了Django框架的多个关键知识点,包括safe过滤器的使用、models.Model的字段格式与属性、admin后台展示、数据库操作、urlpatterns的正则表达式、URLconf的反解功能以及Template语言的细节。内容涵盖了Django开发中常见的URL配置、视图处理、模板语法和数据库管理等方面,旨在帮助开发者深入理解Django工作原理。
摘要由CSDN通过智能技术生成

碎片一:safe过滤器

Django在默认情况下是不随便解析HTML代码的,主要是担心网站安全的问题。所以如果在django中的templates里写入html代码时,渲染出来的效果只会显示出这些html代码,如果需要浏览器渲染出html效果的话,需要使用safe过滤器。

safe过滤器可以将我们写入的html代码进行解析显示出来,例如获取到了一个变量post,post.body的赋值是一串html代码,在template的html文件中可以{ { post.body | safe}}就可以显示html效果。

同样css也是可以用safe过滤器进行解析。

碎片二:models.Model中常用的数据字段格式说明

字段格式 可以使用的参数 说明
BigIntegerField   64位的大整数
BooleanField   希尔值,只有True/False两种
CharField max_length:指定可接受的字符串长度 用来存储较短数据的字符串,通常使用于单行的文字数据
DateField

auto_now:每次对象被存储时就自动加入当前日期

auto_now_add:只有在对象被创建时才加入当前日期

日期格式:可用于datetime.date
DateTimeField

auto_now:每次对象被存储时就自动加入当前日期

auto_now_add:只有在对象被创建时才加入当前日期

日期时间格式,对应到datetime.datetime
DecimalField

max_digits:可接受的最大位数

decimal_places:在所有位数中,小数占几个位数

定点小数数值数据,适用于Python的Decimal模块的实例
EmailField max_length:最长字数 可接受电子邮件地址格式的字段
FloatField   浮点数字段
IntegerField   整数字段,是通用性最高的整数格式
PostiveIntegerField   正整数字段
SlugField max_length:最大字符长度 和CharField一样,通常用来作为网址的一部分
TextField   长文字格式,一般用在HTML窗体的Textarea输入项目中
URLField max_length:最大字符长度 和CharField一样,特别用来记录完整的URL网址

碎片三:models.Model各个字段常用的属性说明

字段选项  说明
null  此字段是否接受存储空值 Null,默认值是False
blank  此字段是否接受存储空白内容,默认值是False
choices  以选项的方式(只有固定内容的数据可以选用)作为此字段的候选值
default  输入此字段的默认值
help_text  字段的求助信息
primary_key  把此字段设置为数据表中的主键KEY,默认值为False
unique  设置此字段是否为唯一值,默认值为False
from django.db import models

class NewTable(models.Model):
    float_f=models.FloatField(null=True)

# choices选项的使用
class NewTable2(models.Model):
    SIZES=(
        ('S','Small'),
        ('M','Medium'),
        ('L','Large'),
    )
    size=models.CharField(max_length=1,choices=SIZES)

 碎片四:数据库在admin后台的显示

from django.contrib import admin
from .models import Bbsuser
from .models import Section
from .models import Bbspost
from .models import Comment
# Register your models here.

#设置后台显示内容
class BbsuserAdmin(admin.ModelAdmin):
    '''bbs用户表'''
    list_display = ('username','email','isadmin',)

class SectionAdmin(admin.ModelAdmin):
    '''bbs版块表'''
    list_display = ('secname','detail',)

class BbspostAdmin(admin.ModelAdmin):
    '''bbs帖子表'''
    list_display = ('postname','content','secid','uid',)

class CommentAdmin(admin.ModelAdmin):
    '''bbs评论表'''
    list_display = ('uid','comment','postid','pcid',)

#导入后台admin显示
admin.site.register(Bbsuser,BbsuserAdmin)
admin.site.register(Section,SectionAdmin)
admin.site.register(Bbspost,BbspostAdmin)
admin.site.register(Comment,CommentAdmin)

启动runserver服务,进入admin后台管理,可以看到对应数据库的设置的字段信息以及数据信息,同时也可以对数据库进行同步操作。

碎片五:Django 数据库操作常用的函数以及修饰词 

函数名称或修饰词  说明
filter(数据表字段=需要查询的字段内容)  返回符合指定条件的数据记录,实例:user.objects.filter(id=100)
values(*field)

 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列,需要搜索的内容,例如user.object.values()显示所有的数据,如果values()中有字段值,就会显示该字段的值的字典

实例:user.objects.values()/user.objects.values('name')

values_list(*field)

 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列

实例:user.objects.values_list()/user.objects.values_list('name')

exclude(数据表字段=需要查询的字段内容)

 返回不符合指定条件的数据记录

实例:user.objects.exclude(id=10)

order_by()

 串接到返回数据记录之后,针对某一指定的字段进行排序,默认是从小到大排序,若想要从大到小排序,那么在指定的字段前加上负号“-”即可 66

实例:user.objects.all().order_by('datetime')

all()

 返回所有的数据记录

实例:user.objects.all()

get()

 获取指定符合条件的唯一元素,如果找不到或有一个以上符合条件,都会产生exception

实例:user.objects.get(id=1)

reverse()        

 对查询结果反向排序,请注意reverse()通常只能在具有已定义顺序的QuerySet上调用(在model类的Meta中指定ordering或调用order_by()方法)。

实例:user.objects.all().order_by('datetime').reverse()

distinct()                   
 从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)
count()

返回数据库中匹配查询(Que、rySet)的对象数量。 

实例:user.objects.all().count()

first()/last()

 获取第一个和最后一个元素

实例:user.objects.all().first()/user.objects.all().last()

aggregate()  可以用来计算数据项的聚合函数
exists()

 用来检查是否存在某指令条件的记录,通常附加在filter()后面,返回true/false

实例:user.objects.exists()

update()  用来快速更新某些数据记录中的字段内容
delete()  删除指定的记录
iexact  不区分大写小的条件设置,用于filter=(数据表字段__iexact=需要查询的字段内容)
contains/icontains  设置条件为含有某一字符串就符合,相当于sql的like和not like,用于filter=(数据表字段__contains/icontains=需要查询的字段内容)
in  提供一个列表,只要符合列表中的任何一个值均可
gt/gte/lt/lte  大于/大于等于/小于/小于等于,用于filter=(数据表字段__gt/gte/lt/lte=需要查询的字段内容)

单表查询时双下划线的使用实例:

models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值
 
models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in
 
models.Tb1.objects.filter(name__contains="ven")  # 获取name字段包含"ven"的
models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
 
models.Tb1.objects.filter(id__range=[1, 3])      # id范围是1到3的,等价于SQL的bettwen and
 
类似的还有:startswith,istartswith, endswith, iendswith 

date字段还可以:
models.Class.objects.filter(first_day__y
Django是一个使用Python编写的开源Web应用框架,它遵循了MVC(Model-View-Controller)的设计模式,旨在帮助开发者快速构建高效、可扩展的Web应用程序。 以下是Django知识图谱的一些关键概念和组件: 1. 模型(Models):模型定义了数据结构和数据库之间的映射关系。通过使用Django的ORM(对象关系映射)功能,可以轻松地创建、查询和操作数据库。 2. 视图(Views):视图处理用户请求并返回响应。它们负责从模型中获取数据,并将其传递给模板进行渲染,最终生成HTML响应。 3. 模板(Templates):模板是用于生成动态HTML页面的文件。它们允许开发者将数据与HTML代码分离,使得页面的设计和逻辑更加清晰。 4. URL配置(URL Configuration):URL配置定义了URL路径与视图函数之间的映射关系。通过URL配置,可以将不同的URL请求分发给相应的视图函数进行处理。 5. 表单(Forms):Django提供了强大的表单处理功能,可以轻松地创建和验证表单。表单可以用于用户输入数据、数据的编辑和验证等场景。 6. 用户认证(Authentication):Django提供了内置的用户认证系统,可以处理用户注册、登录、注销等操作,并提供了一些常用的安全功能,如密码哈希和用户权限管理。 7. 管理后台(Admin):Django的管理后台是一个自动生成的可定制的管理界面,可以方便地对模型数据进行增删改查操作。 8. 中间件(Middleware):中间件是Django处理请求和响应的组件。它可以在请求到达视图之前或响应返回给客户端之前执行一些额外的操作,如身份验证、日志记录等。 9. 数据库支持:Django支持多种数据库后端,包括MySQL、PostgreSQL、SQLite等。开发者可以根据项目需求选择合适的数据库。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值