商余函数 divmod
商,余数=divmod(被除数,除数)
在处理页码的问题时很好用
# 总数据个数 条数
total_count = len(data)
# 总共有多少页 这里利用可商余函数 根据有没有余数来判断是否要在多开一页用于存放没有被整除的页数
total_page_num, more = divmod(total_count, per_page_num)
if more:#如果有余数,就给页码加个一,如果没有的话 页码就是商
total_page_num += 1
HTML返回到后台的数据没有数字类型的
ef user_list(request):
#获取当前的页码,进行判断 异常处理
try:
page_num = int(request.GET.get("page")) #从html中取到的是字符串类型,所以要转成int
except Exception as e: #判断是否有错,当返回的地址是http://127.0.0.1:8001/fenye/?page=fds
#非正常的数字,页码数的时候,就要用这个
page_num = 1
# 没有传页码, 默认展示第一页
一些html中要根据数据内容显示的内容,可以先在试图函数中写好,拼接成字符串,然后再将字符串返回到html中去, 用{{拼接的字符串|safe}} 方法将它正常显示出来
page_html = "".join(page_html_list)#是将所有的列表中的数据拼接成字符串
# ,然后返回到HTML中去转换成可以执行的代码, 后端用到了 {{page_html|safe}}
双下方法之 __name__ __doc__
先看下使用装饰器的函数属性是否有变化
ef wrapper1(func): def inner(*args,**kwargs): """ 这是装饰期的inner :param args: :param kwargs: :return: """ print('装饰器前要执行的') ret=func() return ret return inner @wrapper1 def func1():
print('这是函数1') if __name__ == '__main__': #打印函数的名字 print(func1.__name__) #打印函数的备注 print(func1.__doc__)
打印出的值:
inner 可以看到打印的函数名字并不是func1这个名字,因为使用装饰器有这个弊端,不能显示被装饰的函数的名字
这是装饰期的inner 备注也是func1的函数的备注
:param args:
:param kwargs:
:return:
解决方案 加上一个wraps 具体如下
from functools import wraps def wrapper1(func): @wraps(func) def inner(*args,**kwargs): """ 这是装饰期的inner :param args: :param kwargs: :return: """ print('装饰器前要执行的') ret=func() return ret return inner @wrapper1 def func1(): print('这是函数1') if __name__ == '__main__': #打印函数的名字 print(func1.__name__) #打印函数的备注 print(func1.__doc__)
打印出的值
func1 能够正常显示func1的函数名字了
None