我已经编写了一个django FormView来处理一个formset,最近还引入了“try except”语法。我有一种感觉,如果我使用“try-except”块,我的代码会比较枯燥,但是我有writers块。如何将此块重新格式化为“try except”
def post(self, request, *args, **kwargs):
formset_post = self.formset(request.POST)
if 'url_fk_id' not in kwargs:
kwargs['url_fk_id'] = self.kwargs.get(self.url_fk_id)
form_fk_id = get_object_or_404(models.Fk, id=kwargs['url_fk_id'])
for form in formset_post:
form.instance.fk_id = form_fk_id
list_of_primary_entries = []
if form.instance.entry_is_primary is True:
if True not in Entry.objects.filter(fk_id=form_fk_id).values()
pass
else:
raise forms.ValidationError("there can only be one primary entry")
list_of_primary_entries.append('4')
if len(list_of_primary_entries) > 1:
raise forms.ValidationError("there can only be one primary entry")
if formset_post.is_valid():
for form in formset_post:
form.save()
else:
return self.form_invalid(formset_post)
print(self.request.POST)
return super().post(self, request, *args, **kwargs)
我不认为你的代码从try/除了块中得到什么。Try/except块是一个很好的简写方法,可以跳过一些检查,看看会发生什么。例如:
与之相比:
此外,try/except块旨在捕获抛出的异常,以便即使发生错误,代码也能继续运行,从而更加健壮。您可能希望抛出可能在try/except块中失败的可疑调用。例如,您可能需要:
未来:
然后处理调用get\u object\u或\u 404()失败的情况。如果您正在进行Internet呼叫或访问某些当前不可用的外部资源,这会很有帮助。最好让代码捕获并处理它,而不是失败。例如,如果您试图访问外部资源,如果调用失败,您可能希望在一定时间后重试,等等
以上只是我的两分钱。众说纷纭。。。但我发现,好的错误检查总是好的。它使您的代码更健壮,可读性更强。 快乐的编码
相关问题 更多 >
编程相关推荐