我有一个我需要一些帮助。 在我的django应用程序中,我有这段代码:
from django.template import Context
render_dict = {'scan': oval_scan, 'user': user, 'vulns': oval_vulns, 'asset_vulns': asset_vulns}
report_html = get_template('oval_report.html').render(Context(render_dict))
然而,django给了我以下错误:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/nopsec/nopsecvrm/apps/pegasus/views.py", line 2359, in ovalReport
report_html = get_template('pegasus/oval_report.html').render(Context(render_dict))
File "/usr/local/lib/python2.7/dist-packages/django/template/base.py", line 121, in render
context.render_context.push()
AttributeError: 'Context' object has no attribute 'render_context'
我记得我曾经遇到过这个错误,因为在另一个导入包中的其他地方还有另一个Context
,这是错误使用的,所以我改变了我的代码(非常难看但有效):
import django
render_dict = {'scan': oval_scan, 'user': user, 'vulns': oval_vulns, 'asset_vulns': asset_vulns}
report_html = get_template('report.html').render(django.template.Context(render_dict))
我的问题是:如何通过查看回溯错误来确定哪个Context
错误地使用了django?我该如何解决这种情况?感谢。
答案 0 :(得分:4)
一种解决方案是通过别名导入的Context
来避免冲突:
from django.template import Context as template_context
然后,当您需要使用的版本时,请参阅template_context。
答案 1 :(得分:0)
使用__import__
模块中的__builtins__
功能:
#Detecting name conflicts:
module_name_as_string = 'mymodule'
if module_name_as_string in globals(): #we have name collision
try:
custom_module = __import__(module_name_as_string)
except ImportError:
pass