我是Django的新手,很难弄清楚如何打印对象内部的内容。我指的是变量的类型和值,以及它的成员。就像拉威尔一样
函数。Laravel's
是调试应用程序的便捷工具。
我已经找过了。但没有发现任何有用的东西。我试过了
和
..。但它们都不能提供有关对象的所需信息。以下是Laravel的输出示例
函数。
在这张图片中,我打印了Laravel的request对象。正如你所看到的,它显示了一个对象的完整信息。我指的是它所属的类名,它的成员变量。还有它的类名和值。它不断深入到物体内部并打印出所有的信息。
但我在Django中找不到类似的工具。很难相信Django没有这么有用的工具。因此,我想知道任何第三方包,可以做到这一点。
我使用的是Django 2.0.5版。并尝试打印django.contrib.messages
另外,我希望输出显示在浏览器中,而不是控制台中。以一种可读性很好的方式,这就是为什么我要求一个Django包,它可以接收对象并呈现一个格式良好的对象体系结构表示。
发布于 2020-04-10 13:40:08
实际上,Django并没有提供这种特殊的功能。所以为了摆脱这个问题,我定制了一个
键入function并在所有Django项目中使用它。也许它能帮助一些人。
假设我们有一个名为的库文件夹
在该文件夹中,我们有一个名为的库文件
**
..。喜欢**
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中像这样调用它:
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)
就是这样。
https://stackoverflow.com/questions/50553820
复制相似问题