2010-04-27 78 views
1

我有一个嵌套的循环,我想跳出来。在搜索此网站后,最好的做法是将嵌套循环放入函数中,并使用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}) 

回答

3

你不应该把Django视为任何特殊的方式。 这只是Python。因此,您可以在views.py中拥有任何您喜欢的功能。唯一的限制是视图本身必须接受请求对象并返回HttpResponse的子类。除此之外,你可以在模块中做你喜欢的事情,包括具有你的视图使用的函数,类或常量。

如果您有很多实用功能,您可能需要考虑将它们解压缩到您的应用程序目录中的lib.py,以保持整洁。但是如果你只有一到两个,就没有必要这么做了。

3

是的。在views.py中有没有视图的函数是很好的 - (我一直这样做)。如果该功能仅用于该模块内(即通过views.py中的视图)或仅使用单个视图功能,则此功能尤其适用。

如果您担心将其暴露给外部世界,您可以将其设为private function。另外,尽量避免给它一个叫做request的参数,我倾向于在阅读代码时潜意识地解析函数,这些函数将请求作为视图函数。