私はこの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例外例外を取得するため、5行目が何をするかである:ここ
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()の結果はdictです。そのdictでviewnameを検索すると、関数が返されます。カッコは、指定された引数でその関数を呼び出しています。 –