自定义Django runserver输出

3 投票
3 回答
1833 浏览
提问于 2025-04-16 14:38

我想修改 Django 运行服务器时的输出内容... 我想添加当前对象的地址,比如 apps.views.index

还想把这个请求中的所有查询都加上。

我该怎么改代码来实现这个设置呢?

3 个回答

0

这不是你问题的确切答案,但我觉得django-debug-toolbar可以显示所有的查询和很多其他有用的信息。

2

我不太建议修改runserver命令,但……

django-devserver提供了一个替代的manage.py runserver命令,这个替代命令可以让你扩展输出内容,显示你感兴趣的任何信息。

上面链接的页面有安装的说明,页面底部有一个“构建模块”的部分,里面展示了如何扩展输出的例子。

我不太确定你想要输出什么,但也许可以像这样:

from devserver.modules import DevServerModule

class ViewNameModule(DevServerModule):
    logger_name = 'view name module'

    def process_view(self, request, view_func, view_args, view_kwargs):
        self.logger.info('View name: %s' % '.'.join([view_func.__module__, view_func.func_name]))
1

我觉得最好的办法是使用日志功能,并在这个基础上加一些代码。

比如:

from django.db import connection
sql=connection.queries

还有:

doc = {
                'record_hash': hash,
                'level': record.level,
                'channel': record.channel or u'',
                'location': u'%s:%d' % (record.filename, record.lineno),
                "message": record.msg,
                'module': record.module or u'<unknown>',
                'occurrence_count': 0,
                'solved': False,
                'app_id': app_id,
                'sql': sql,
            }

想了解更多,可以查看这个链接:http://docs.djangoproject.com/en/dev/topics/logging/

撰写回答