django笔记

1.1 反向查询

from django.db import models
import datetime
from django.utils import timezone
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

在这里插入图片描述
在这里插入图片描述
双下划线:小写表名__字段名__条件
在这里插入图片描述
小写表名_set.all()
在这里插入图片描述

1.2 设置上海时间

TIME_ZONE = 'Asia/Shanghai'

1.3 request.path_info和all、values、values_list

def index(request):
    print(request.path_info)
    q1 = Question.objects.all()
    q2 = Question.objects.all().values()
    q3 = Question.objects.all().values_list()
    print("q1 is %s" % q1)
    print("q2 is %s" % q2)
    print("q3 is %s" % q3)
    return HttpResponse("hello")

在这里插入图片描述
request.path_info:匹配的url
all():里面是对象
values():里面是字典
values_list():里面是元组

1.4 getlist()

取checkbox中的值

1.5 from django.urls import reverse

在views里根据name对url进行反解

def index(request):
    v = reverse("index")
    print(v)
    return HttpResponse("hello")

在这里插入图片描述

1.6 chunks()上传文件

保留

1.7 filter

1.app目录中创建templatetags目录
2.创建py文件
3.创建template对象并注册
	from django import template
	register = template.Library()
	
	@register.filter
	def func(a1, a2):
		return "xxx"
4.settings中注册app
5.模板顶部 {% load xx %}
6.{{ 参数1|函数名:"参数二,参数三"}}
缺点:最多两个参数,不能加空格
优点:能作为if条件

1.8 simple_tag

1.app目录中创建templatetags目录
2.创建py文件
3.创建template对象并注册
	from django import template
	register = template.Library()
	
	@register.simple_tag
	def func(a1, a2,...):
		return "xxx"
4.settings中注册app
5.模板顶部 {% load xx %}
6.{{ 函数名 arg1 arg2 }}
优点:任意参数
缺点:不能作为if条件

1.9 mark_safe

保留

2.0 get_xxx_display,获取choice对应的名称

urls.py
urlpatterns = [
    path('', views.index, name="index"),
    path('userinfo/', views.userinfo, name="userinfo"),
]
models.py
class UserInfo(models.Model):
    name = models.CharField(max_length=32, null=False, blank=False)
    user_type_choices = (
        (1, '普通用户'),
        (2, '管理员'),
        (3, '超级用户'),
    )

    user_type = models.IntegerField(choices=user_type_choices, default=1)
    email = models.EmailField(null=False, blank=False)

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'UserInfo'
        verbose_name_plural = 'UserInfo'
views.py
def userinfo(request):
    user_info = UserInfo.objects.filter(id=1)
    print(user_info)
    return render(request, 'userinfo.html', {"user_info": user_info})
html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% for item in user_info %}
        <p>{{ item.name }}</p>
        <p>{{ item.user_type }}</p>
        <p>{{ item.get_user_type_display }}</p>  #这里使用get_字段名_display
        <p>{{ item.email }}</p>
    {% endfor %}

</body>
</html>

数据库:
在这里插入图片描述
在这里插入图片描述

2.1 F和Q

Q:可用于和、或、非关系中,当参数中有关键字参数,Q需写在关键字参数前面

Order.objects.get(
    Q(create_time=date(2016, 10, 2)) | Q(create_time=date(2016, 10, 6))
    desc__startswith='Who',
)
urls.py
urlpatterns = [
    path('', views.index, name="index"),
    path('userinfo/', views.userinfo, name="userinfo"),
    path('userinfoq/', views.userinfoq, name="userinfoq"),
]
views.py
from django.shortcuts import render, HttpResponse
from django.db.models import F, Q
def userinfoq(request):
    user_info = UserInfo.objects.filter(Q(user_type=1) | Q(user_type=2))
    print(user_info)
    return HttpResponse("this is Q function")
models.py
from django.db import models
import datetime
from django.utils import timezone
class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text


class UserInfo(models.Model):
    name = models.CharField(max_length=32, null=False, blank=False)
    user_type_choices = (
        (1, '普通用户'),
        (2, '管理员'),
        (3, '超级用户'),
    )

    user_type = models.IntegerField(choices=user_type_choices, default=1)
    email = models.EmailField(null=False, blank=False)

    def __str__(self):
        return self.name

    class Meta:
        db_table = 'UserInfo'
        verbose_name_plural = 'UserInfo'

在这里插入图片描述
model、modelform、上传文件、cookie、session、模板、F

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值