python - 使用函数打破 Django views.py 中的嵌套循环

标签 python django loops django-views

我有一个我想跳出的嵌套循环。搜索该站点后,最好的做法似乎是将嵌套循环放入一个函数中,然后使用 return 来中断它。在 views.py 文件中包含不是 View 的函数是否可以接受?此功能位置的最佳做法是什么?这是我的 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 View 有任何特殊之处。 它只是 Python。因此,您可以在 views.py 中拥有您喜欢的任何功能。唯一的限制是 View 本身必须接受请求对象并返回 HttpResponse 的子类。除此之外,您可以在该模块中做任何您喜欢的事情,包括让您的 View 使用函数、类或常量。

如果您有很多实用功能,为了整洁起见,您可能需要考虑将它们解压缩到您的应用程序目录中的 lib.py 中。但如果您只有一两个,则没有必要这样做。

关于python - 使用函数打破 Django views.py 中的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718890/

相关文章:

javascript - 计算给定年份中属于 13 号的星期五的数量

java - 迭代所有不为空的槽,二维数组?

objective-c - 使用 NSNotification 中断循环

python - Numpy 中 zeros 函数的性能

python - Django HStore : How to override a key-value model field's __getattr__ and __setattr__

django - 如何从 django-piston 处理程序中为 JSON 消息设置 HTTP header ?

python - 如何将自定义错误代码添加到 Django Rest Framework

python3字符串插值 - 两种方式,一种都不起作用

Python 模块全局变量与 __init__ 全局变量

python - 给定字典列表,如何消除一个键的重复项,并按另一个键排序