首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django中的Laravel的dd()等效项

django中的Laravel的dd()等效项
EN

Stack Overflow用户
提问于 2018-05-27 23:43:29
回答 4查看 4.7K关注 0票数 18

我是Django的新手,很难弄清楚如何打印对象内部的内容。我指的是变量的类型和值,以及它的成员。就像拉威尔一样

函数。Laravel's

是调试应用程序的便捷工具。

我已经找过了。但没有发现任何有用的东西。我试过了

..。但它们都不能提供有关对象的所需信息。以下是Laravel的输出示例

函数。

在这张图片中,我打印了Laravel的request对象。正如你所看到的,它显示了一个对象的完整信息。我指的是它所属的类名,它的成员变量。还有它的类名和值。它不断深入到物体内部并打印出所有的信息。

但我在Django中找不到类似的工具。很难相信Django没有这么有用的工具。因此,我想知道任何第三方包,可以做到这一点。

我使用的是Django 2.0.5版。并尝试打印django.contrib.messages

另外,我希望输出显示在浏览器中,而不是控制台中。以一种可读性很好的方式,这就是为什么我要求一个Django包,它可以接收对象并呈现一个格式良好的对象体系结构表示。

EN

Stack Overflow用户

发布于 2020-04-10 13:40:08

实际上,Django并没有提供这种特殊的功能。所以为了摆脱这个问题,我定制了一个

键入function并在所有Django项目中使用它。也许它能帮助一些人。

假设我们有一个名为的库文件夹

在该文件夹中,我们有一个名为的库文件

**

..。喜欢**

代码语言:javascript
运行
复制
from django.core import serializers
from collections.abc import Iterable
from django.db.models.query import QuerySet
from django.core.exceptions import ObjectDoesNotExist


def dd(request, data=''):
    try:
        scheme      = request.scheme
        server_name = request.META['SERVER_NAME']
        server_port = request.META['SERVER_PORT']
        remote_addr = request.META['REMOTE_ADDR']
        user_agent  = request.META['HTTP_USER_AGENT']
        path        = request.path
        method      = request.method
        session     = request.session
        cookies     = request.COOKIES

        get_data = {}
        for key, value in request.GET.lists():
            get_data[key] = value

        post_data = {}
        for key, value in request.POST.lists():
            post_data[key] = value

        files = {}
        for key, value in request.FILES.lists():
            files['name'] = request.FILES[key].name
            files['content_type'] = request.FILES[key].content_type
            files['size'] = request.FILES[key].size

        dump_data = ''
        query_data = ''
        executed_query = ''
        if data:
            if isinstance(data, Iterable):
                if isinstance(data, QuerySet):
                    executed_query = data.query
                    query_data = serializers.serialize('json', data)
                else:
                    dump_data = dict(data)
            else:
                query_data = serializers.serialize('json', [data])


        msg = f'''
            
                Scheme        : {scheme}

                Server Name   : {server_name}

                Server Port   : {server_port}

                Remote Address: {remote_addr}

                User Agent    : {user_agent}

                Path          : {path}

                Method        : {method}

                Session       : {session}

                Cookies       : {cookies}

                Get Data      : {get_data}

                Post Data     : {post_data}

                Files         : {files}

                Executed Query: 
{executed_query}

                Query Data    : 
{query_data}

                Dump Data     : 
{dump_data}

            
        '''

        return msg
    except ObjectDoesNotExist:
        return False

当您需要使用此函数时,只需在任何views.py中像这样调用它:

代码语言:javascript
运行
复制
from django.http import HttpResponse
from django.shortcuts import render
from django.views import View

from app_libs.dump import dd
from .models import Products

class ProductView(View):
    def get(self, request):
        data = {}
        data['page_title'] = 'products'
        data['products'] = Products.objects.get_all_product()

        template = 'products/collections.html'

        dump_data = dd(request, data['products'])
        return HttpResponse(dump_data)

        # return render(request, template, data)

就是这样。

票数 3
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50553820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档