-1
我已经给了这个django项目。我一直试图运行它并找出它。我有一个观点:我需要知道这行代码在django中做了什么
@csrf_exempt
def view(Request,viewName,id):
print '-------------------start ' + str(datetime.datetime.now())
try:
c = globals()[viewName](viewName, viewName, None, Request, id)
data = c.render()
print '-------------------end ' + str(datetime.datetime.now())
return data
except Exception as ex1:
print '----------------'
print
print 'Error in importing View: %s.' % viewName
print ex1
print traceback.format_exc()
print '----------------'
print '-------------------end ' + str(datetime.datetime.now())
return HttpResponse()
我需要知道的是第五行做什么,因为我得到一个KeyError异常异常有:
c = globals()[viewName](viewName, viewName, None, Request, id)
这里是回溯:
2016-09-24 09:42:55+0330 [-] -------------------start 2016-09-24 09:42:55.045115
2016-09-24 09:42:55+0330 [-] ----------------
2016-09-24 09:42:55+0330 [-]
2016-09-24 09:42:55+0330 [-] Error in importing View: HealthSearchPolicy.
2016-09-24 09:42:55+0330 [-] u'HealthSearchPolicy'
2016-09-24 09:42:55+0330 [-] Traceback (most recent call last):
2016-09-24 09:42:55+0330 [-] File "/home/shirvani/Desktop/Archive/beasy/views.py", line 167, in view
2016-09-24 09:42:55+0330 [-] c = globals()[viewName](viewName, viewName, None, Request, id)
2016-09-24 09:42:55+0330 [-] KeyError: u'HealthSearchPolicy'
2016-09-24 09:42:55+0330 [-]
2016-09-24 09:42:55+0330 [-] ----------------
2016-09-24 09:42:55+0330 [-] -------------------end 2016-09-24 09:42:55.04629
我认为你应该找到写这段代码并殴打他的人。除了代码设计不好之外,使用'globals()'并在最后返回一个空的响应使得逻辑更加糟糕。你可以通过打印'globals()'开始调试,看看里面有什么。 – ozgur
已经做到了,它和无穷无尽的名单......好全局:D ......我不明白的是该行的格式。括号是做什么的? – Mani
globals()的结果是字典。在该词典中查找viewname会返回一个函数。括号使用提供的参数调用该函数。 –