用法新发现

商余函数  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

 

 

posted on 2018-02-04 10:00  王大拿  阅读(191)  评论(0编辑  收藏  举报

导航