django笔记
[TOC]
django的使用
1.创建表
1.1在表中新增列时,由于已存在列中可能已有数据,所以新增列必须制定新增列对应的数据
手动输入一个值
设置默认值
age = models.InterField(default = 2)
允许为空
age = models.InterField(null = True, blank = True)
要选择一段矩形代码,请在按住 Shift+Alt (在 Windows 和 Linux 中)/ Shift+Alt (Option) (在 macOS 中)的同时拖动鼠标。
问题记录
1.’NoneType’ object has no attribute ‘password’
这个是在数据库数据为空的时候出现的bug
- 名字不能为中文
- 密码最小长度
- 评论区换行符变成了空格
2.Q查询中“,”可以表示and而直接用and却表示的是或
URL
用get方法传输值的时候 用?加上name=一个值,传输多个值的时候,用&进行连接,不用在加上?了
eg:删除盲盒
随机从数据库中取数据
1
2
3n = 10
i = random.ranint(0, UserInfo.objects.count()-n)
articles = UserInfo.objects.all()[i: i+n]
1 | count = Article.objects.all().count() |
1
2
3
4
5import random
content_pks = Article.objects.values_list('pk', flat=True)
selected_pks = random.sample(list(content_pks), 3)
content_objects = Article.objects.filter(pk__in=selected_pks)
print(content_objects)
1 | total_count= Content.objects.count() |
sample(序列a,n)
功能:从序列a中随机抽取n个元素,并将n个元素生以list形式返回
一、下面来看看:filter查询:
1.__contains(包含)
shell命令下查询:Blog.objects.filter(title__contains =”django”)—————————>返回一个queryset[]查询(查询集)只能输入一个值。加上一个”i”后不区别大小写【sql等数据库中】
2.__in (其中之一,可以传入一个列表,传多个值。)
Blog.objects.filter(id__in = [3,6,9])
3.__range(一个范围,使用元祖):
Blog.objects.filter(id__range =(30,45))
二、前面讲的是包含的查询,下面来看看不包含的查询:
exclude方法为不包含的:
Blog.objects.exclude(id=3)
三、日期类型查询
Blog.objects.filter(create_time__year = 2018)——————->查询年为2018年的内容
Blog.objects.filter(create_time__month=3)————————->查询月
四、日期查询类型只是筛选了条件,怎么让条件在前端显示呢?django提供了一个dates方法:
Blog.objects.dates(‘create_time’, ‘year’,’DESC’)——————————->分别为:时间字段,查询返回年year,年月month,年月日day,最后一个参数是排序方式ASC正序,DESC倒序。