文章目录
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