Django如何在使用runserver时打印数据

时间:2017-10-25 11:36:49

标签: django

我有一个字典数据,包含每个用户创建的玩家数量:

views.py

def statistics(request):
    users = User.objects.all()
    data = dict()
    for user in users:
        players = Players.objects.filter(created__email=user.email).count()
        if players > 0:
            data[user.email] = players
            logger.info(data)

当我使用runserver时,如何在控制台中打印此词典? 我见过django伐木工,但我完全不了解它们。

5 个答案:

答案 0 :(得分:2)

在django设置文件中设置日志记录:

.login-form {
   background: #FFFFFF;
   min-width: 40vh;
   padding: 65px;
   text-align: center;
   box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
}

然后您可以开始登录您的视图:

import os

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
        },
    },
}

查看有关Logging | Django文档

的更多信息

祝你好运!

答案 1 :(得分:2)

你应该这样做

import os

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'filters': ['require_debug_true'],
        },
    },
    'loggers': {
        'mylogger': {
            'handlers': ['console'],
            'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
            'propagate': True,
        },
    },
}

这将在DEBUG = True(通常使用runserver)时打印到控制台。然后就可以了

import logging
logger = logging.getLogger("mylogger")
logger.info("Whatever to log")

参考doc

答案 2 :(得分:0)

正如@Andriy所说,你可以使用日志记录。它开箱即用。 如果你想要漂亮的打印字典,你可以使用pprint

import pprint
pp = pprint.PrettyPrinter(indent=4)

pp.pprint(yourdict)

答案 3 :(得分:0)

假设你的项目在linux上运行,那取决于runserver是否在nohup上。如果没有,则所有打印语句都将在命令行中显示,否则如果它在nohup上运行,则在命令行上运行以下命令。

tail -f nohup.out

答案 4 :(得分:0)

只需在循环中添加print(players),它就会在终端中打印结果。

def statistics(request):
users = User.objects.all()
data = dict()
for user in users:
    players = Players.objects.filter(created__email=user.email).count()
    if players > 0:
        print(players)
        data[user.email] = players
        logger.info(data)