- 定义闭包(装饰器)
1 2 3
| def is_longin(func):
def check_login(request):
|
如果登录, 返回函数func
1 2 3
| ticket = request.COOKIES.get('ticket')
if not ticket:
|
如果没有登录, 跳转到登录页面
1 2 3 4 5 6 7 8 9 10 11 12 13
| return HttpResponseRedirect(reverse('user:login'))
user = Users.objects.filter(ticket=ticket)
if not user:
# 如果没有登录, 跳转到登录页面
return HttpResponseRedirect(reverse('user:login'))
return func
return check_login
|
2.模板
1 2 3 4 5 6 7 8 9 10 11
| 在基础base.html中挖坑
{% block xxx %} {% endblock %}
在index.html页面中, 需要先继承{% extends 'base.html '%}
{% block xxx %} {% endblock %}
加载上一次填坑的内容
{% block.super %}
|
3.F/Q
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| last(): 最后一个
first() : 第一个
一对多:
多找一:
student.g.g_name
student.g.id
一找多:
grade.student_set.all()
一对一:
student.g.g_name
grade.student.all()
|
F(): 用于做计算
1
| students.filters(s_yuwen__gt= F('s_shuxue') + 10)
|
Q - 用于过滤信息 |或者 &并且 ~取反
查询python班语文大于等于80或者数学小于等于80的学生
1 2 3 4 5 6 7 8 9 10 11 12 13
| grade = Grade.objects.filter(g_name='python').first()
students = grade.student_set.all()
stu = students.filter(Q(s_yuwengte=80) | Q(s_shuxue__lte=80))
查询python班语文小于80并且数学小于等于80的学生
stu = students.filter(~Q(s_yuwengte=80) & Q(s_shuxue__lte=80))
|
4.模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| if
for
ifequal : 判断是否相等
forloop.counter : 循环, 从1开始
forloop.revcounter : 倒循环, 倒1结束
forloop.counter0 : 循环, 从0开始
forloop.revcounter0 : 倒循环, 倒0结束
Ctrl shift + Delete ----删除浏览器缓存
|
创建班级的模型
1 2 3 4 5
| class Grade(models.Model):
g_name = models.CharField(max_length=20)
g_create_time = models.DateTimeField(auto_now_add=True)
|
1 2
| class Meta: db_table = 'grade'
|
创建学生的模型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Student(models.Model):
stu_name = models.CharField(max_length=6, unique=True)
stu_sex = models.BooleanField(default=0)
stu_birth = models.DateField()
stu_delete = models.BooleanField(default=0)
stu_create_time = models.DateField(auto_now_add=True)
stu_operate_time = models.DateField(auto_now=True)
stu_tel = models.CharField(max_length=11)
stu_yuwen = models.DecimalField(max_digits=3, decimal_places=1, default=0)
stu_shuxue = models.DecimalField(max_digits=3, decimal_places=1, default=0)
g = models.ForeignKey(Grade)
|
1 2
| class Meta: db_table = 'stu'
|
创建学生拓展的模型:
class StuInfo(models.Model):
1 2 3 4 5 6
| stu_addr = models.CharField(max_length=30) stu_age = models.IntegerField() stu = models.OneToOneField(Student)
class Meta: db_table = 'stu_info'
|
实际操作:
1 2 3 4 5 6
| 1.通过某个学生拓展表去获取学生信息 2. 通过学生表获取个人拓展表的信息 3. 获取python班下的所有学生的信息和拓展表的信息 4. 获取python班下语文成绩大于80分的女学生 5. 获取python班下语文成绩超过数学成绩10分的男学生 6. 获取出生在80后的男学生,查看他们的班级
|