分页器

<!--前端-->
{% for book in page_queryset %}
<p>{{ book.title }}</p>
{% endfor %}
{{ page_obj.page_html|safe }}
# 后端
book_list = models.Book.objects.all()
current_page = request.GET.get("page",1)
all_count = book_list.count()
page_obj = Pagination(current_page=current_page,all_count=all_count,per_page_num=10,pager_count=5)
page_queryset = book_list[page_obj.start:page_obj.end]

分页器模板代码

utils文件中mypage.py
views.py
前端

Django 序列化组件

什么时候用

后端想直接将实例化出来的数据对象直接发送给客户端,那么这个时候,就可以用Django给我们提供的序列化方式
# 后端:
def ser(request):
    #拿到用户表里面的所有的用户对象
    user_list=models.User.objects.all()
    #导入内置序列化模块
    from django.core import serializers
    #调用该模块下的方法,第一个参数是你想以什么样的方式序列化你的数据
    ret=serializers.serialize('json',user_list)
    return render(request,'index.html',locals())
​
# 前端得到:
[{"model": "app01.user","pk": 1,"fields":
  {"username": "jason","age": 18,"gender": 1}
    }......]

bulk_create 批量插入数据(高效)

l = []
for i in range(10000):
    l.append(models.Book2(name='第%s本书'%i))
models.Book2.objects.bulk_create(l)  # 批量插入数据 

choices字段参数

为什么用

1.对于类型性别,假否,婚否的字段,有固定字段数据的字段可以用choices参数
2.节省空间,因为存的是数字

如何使用

# models.py文件中:
class User(models.Model):
    username = models.CharField(max_length=32)
    age = models.IntegerField()
    choices = (
        (1,'男'),(2,'女'),(3,'其他')
    )
    gender = models.IntegerField(choices=choices)  # 指定choices参数
​
    """
    1 存choice里面罗列的数字与中文对应关系
         print(user_obj.get_gender_display())
            只要是choices字段 在获取数字对应的注释 固定语法
            get_字段名_display()
​
    2 存没有罗列出来的数字
        不会报错 还是展示数字
    """
# views.py文件中
def userlist(request):
    user_obj = models.User.objects.filter(pk=1).first()
    gender = user_obj.get_gender_display()  # 得到对应的性别注释,如'男'
 
02-10 06:15