Python 使用函数中断Django views.py中的嵌套循环

Python 使用函数中断Django views.py中的嵌套循环,python,django,loops,django-views,Python,Django,Loops,Django Views,我有一个嵌套循环,我想打破它。搜索此站点后,最好的做法似乎是将嵌套循环放入函数中,然后使用return来打破它。在views.py文件中包含非视图的函数是否可以接受?此功能位置的最佳做法是什么?下面是myviews.py中的示例代码 @login_required def save_bookmark(request): if request.method == 'POST': form = BookmarkSaveForm(request.POST) if

我有一个嵌套循环,我想打破它。搜索此站点后,最好的做法似乎是将嵌套循环放入函数中,然后使用return来打破它。在views.py文件中包含非视图的函数是否可以接受?此功能位置的最佳做法是什么?下面是myviews.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})

对。在
views.py
中有不是视图的函数是可以的(我一直都这样做)。如果该功能仅在该模块内使用(即通过该
views.py
中的视图使用),或仅通过单个视图功能使用,则这尤其合适


如果你担心把它暴露在外面的世界里,你总是可以让它成为一个秘密。另外,尽量避免给它一个名为
request
的参数,我倾向于在阅读代码时下意识地解析将请求作为查看函数的函数。

是。在
views.py
中有不是视图的函数是可以的(我一直都这样做)。如果该功能仅在该模块内使用(即通过该
views.py
中的视图使用),或仅通过单个视图功能使用,则这尤其合适


如果你担心把它暴露在外面的世界里,你总是可以让它成为一个秘密。另外,尽量避免给它一个名为
request
的参数,我倾向于在阅读代码时下意识地解析将请求作为视图函数的函数。

你不应该认为Django视图有任何特殊之处它只是Python。因此,您可以在views.py中使用您喜欢的任何函数。唯一的限制是视图本身必须接受请求对象并返回
HttpResponse
的子类。除此之外,您可以在该模块中执行您喜欢的操作,包括拥有视图使用的函数、类或常量


如果你有很多实用功能,你可以考虑在程序目录中把它们提取到例如代码< LIB .Py <代码>中,以便于整洁。但是,如果您只有一两个视图,就没有必要这样做。

您不应该认为Django视图有任何特殊之处它只是Python。因此,您可以在views.py中使用您喜欢的任何函数。唯一的限制是视图本身必须接受请求对象并返回
HttpResponse
的子类。除此之外,您可以在该模块中执行您喜欢的操作,包括拥有视图使用的函数、类或常量

如果你有很多实用功能,你可以考虑在程序目录中把它们提取到例如代码< LIB .Py <代码>中,以便于整洁。但是如果你只有一两个,就没有必要这么做