gpt4 book ai didi

python - Django 升级后出现 ContentNotRenderedError

转载 作者:太空狗 更新时间:2023-10-29 21:55:41 31 4
gpt4 key购买 nike

这是我使用的中间件:

class StatsMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
# get number of db queries before we do anything
n = len(connection.queries)

# time the view
start = time.time()
response = view_func(request, *view_args, **view_kwargs)
totTime = time.time() - start

# compute the db time for the queries just run
queries = len(connection.queries) - n
if queries:
dbTime = reduce(add, [float(q['time'])
for q in connection.queries[n:]])
else:
dbTime = 0.0

# and backout python time
pyTime = totTime - dbTime

stats = {
'totTime': totTime,
'pyTime': pyTime,
'dbTime': dbTime,
'queries': queries,
'sql': '<br />'.join([ '<div class="stats_sql_query">%s</div><div class="stats_sql_time">%s s</div>' % (q['sql'], q['time']) for q in connection.queries[n:]]),
}

# clean query cache
db.reset_queries()

# replace the comment if found
if response and response.content:
s = response.content
regexp = re.compile(r'(?P<cmt><!--\s*STATS:(?P<fmt>.*?)-->)')
match = regexp.search(s)
if match:
s = s[:match.start('cmt')] + \
match.group('fmt') % stats + \
s[match.end('cmt'):]
response.content = s

return response

在 django 1.3 之前,它对我来说一直工作得很好,但是当我今天升级到 django trunk (1.4+) 时,它就坏了,除了:-

Traceback:
File "./../django-trunk/django/core/handlers/base.py" in get_response
105. response = middleware_method(request, callback, callback_args, callback_kwargs)
File "misc/middleware.py" in process_view
63. if response and response.content:
File "./../django-trunk/django/template/response.py" in _get_content
123. raise ContentNotRenderedError('The response content must be '

Exception Type: ContentNotRenderedError at /
Exception Value: The response content must be rendered before it can be accessed.

如果有人使用 django trunk 指出我正确的方向,我将不胜感激。谢谢!

最佳答案

Hacktastic 解决方案:您可以通过检查响应是否具有 is_rendered 属性来防止这种情况发生,如果是,则在按如下方式更改 STATS 字符串之前确定它为真:

   if response:
if (hasattr(response,'is_rendered') and response.is_rendered or not hasattr(response,'is_rendered') ) and response.content:
s = response.content
regexp = re.compile(r'(?P<cmt><!--\s*STATS:(?P<fmt>.*?)-->)')
match = regexp.search(s)
if match:
s = s[:match.start('cmt')] + \
match.group('fmt') % stats + \
s[match.end('cmt'):]
response.content = s

return response

关于python - Django 升级后出现 ContentNotRenderedError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655110/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com