我查看了 Django 内置的 Auth 应用程序,并注意到视图分为许多:
password_reset
,
password_reset_confirm
,
password_reset_done
,
password_reset_complete
在这里,每一个简单的动作都有不同的视角。所有的应用程序都应该这样写,还是一个视图可以管理更多的 URL?
我查看了 Django 内置的 Auth 应用程序,并注意到视图分为许多:
password_reset
,
password_reset_confirm
,
password_reset_done
,
password_reset_complete
在这里,每一个简单的动作都有不同的视角。所有的应用程序都应该这样写,还是一个视图可以管理更多的 URL?
经验法则是不同的 URL 应该由不同的视图处理。
在 Django 1.3中引入基于类的视图之前,如果您的视图函数试图处理许多情况,这可能会导致混乱。但是现在您可以创建基于类的视图,允许您对现有视图进行子类化并重用这些视图的行为。
例如(对于有多个游戏的网站)。
class GameView(View):
def game_method(self):
# compute things here
return data
class PuzzleGameView(GameView):
def get(self, request, *args, **kwargs):
data = self.game_method()
# do other things here
return HttpResponse("")
class SudokuGameView(PuzzleGameView):
pass
class ActionGameView(GameView):
pass
中定义的方法GameView
可以在子类中调用和重用。