使用函数在Django的views.py中打破嵌套循环
问题描述:
我有一个嵌套的循环,我想跳出来。在搜索此网站后,最好的做法是将嵌套循环放入函数中,并使用return来突破它。 view.py文件中的函数是否可以接受?这个功能的最佳位置是什么?以下是我的views.py中的示例代码.py使用函数在Django的views.py中打破嵌套循环
@login_required
def save_bookmark(request):
if request.method == 'POST':
form = BookmarkSaveForm(request.POST)
if form.is_valid():
bookmark_list = Bookmark.objects.all()
for bookmark in bookmark_list:
for link in bookmark.link_set.all():
if link.url == form.cleaned_data['url']:
# Do something.
break
else:
# Do something else.
else:
form = BookmarkSaveForm()
return render_to_response('save_bookmark_form.html', {'form': form})
答
你不应该把Django视为任何特殊的方式。 这只是Python。因此,您可以在views.py中拥有任何您喜欢的功能。唯一的限制是视图本身必须接受请求对象并返回HttpResponse
的子类。除此之外,你可以在模块中做你喜欢的事情,包括具有你的视图使用的函数,类或常量。
如果您有很多实用功能,您可能需要考虑将它们解压缩到您的应用程序目录中的lib.py
,以保持整洁。但是如果你只有一到两个,就没有必要这么做了。
答
是的。在views.py
中有没有视图的函数是很好的 - (我一直这样做)。如果该功能仅用于该模块内(即通过views.py
中的视图)或仅使用单个视图功能,则此功能尤其适用。
如果您担心将其暴露给外部世界,您可以将其设为private function。另外,尽量避免给它一个叫做request
的参数,我倾向于在阅读代码时潜意识地解析函数,这些函数将请求作为视图函数。