• Django调试方法两则


    web程序调试起来和桌面程序有着很大的差别,对于Django程序来说调试更是个问题,虽然现在有第三方的调试工具robhudson-django-debug-toolbar,但使用起来并不是很方便,而且很多人习惯于通过print来调试,这样方便快捷。下面就介绍两种简单的调试方法:

    1.充分利用Django的error page

    Django的error page功能很强大,能提供详细的traceback,包括局部变量的值,以及一个纯文本的异常信息。拥有同phpinfo()一样的作用,可以展示当前应用的相关设置,包括请求中的 GET, POST and COOKIE 数据以及HTTP环境中的所有重要META fields。

    可以通过

    assert False
    assert False, request.GET

    来触发Django的错误页面,进而进行调试工作

    2.输出log到开发服务器终端中

    借助python的logging模块

    在setting.py中添加如下配置

    import logging
    logging.basicConfig(
    level
    = logging.DEBUG,
    format
    = '%(asctime)s %(levelname)s %(message)s',
    )

    在需要输出log信息的地方可以这样调用

    import logging
    logging.debug(
    "A log message")

    这样一来就能在开发服务器的终端中看到想要输出的log,如果想将log信息记录到指定文件中去,调整logging的basicConfig即可,如下所示:

    logging.basicConfig(
    level
    = logging.DEBUG,
    format
    = '%(asctime)s %(levelname)s %(message)s',
    filename
    = '/tmp/myapp.log',
    filemode
    = 'w'
    )

    有时我们发现我们的程序大部分情况下运行正常,只在特定环境中出现错误,此时可以使用traceback module 记录当前栈存信息 ,方便调试。具体调用方法如下所示:


    import logging, traceback, pprint
    def my_buggy_function(arg):
    ...
    if error_condition:
    stack
    = pprint.pformat(traceback.extract_stack())
    logging.debug(
    'An error occurred: %s' % stack)

    上述调试方法来源于网络,参见:http://simonwillison.net/2008/May/22/debugging/

  • 相关阅读:
    多线程环境下调用 HttpWebRequest 并发连接限制
    i—比 i++ 快?
    文件在不同文件系统间拷贝文件时间改变的问题
    Go websocket 聊天室demo2
    Go websocket 聊天室demo以及k8s 部署
    AcWing 1077. 皇宫看守
    AcWing 1073. 树的中心
    AcWing 1085. 不要62
    AcWing 1081 度的数量
    AcWing 1082. 数字游戏
  • 原文地址:https://www.cnblogs.com/Jerryshome/p/1780145.html
Copyright © 2020-2023  润新知