0
我通过Django的看着内置的身份验证的应用程序,发现意见被分成许多,如:Django查看过程应该执行多少操作?
password_reset
, password_reset_confirm
, password_reset_done
, password_reset_complete
这里的每一个简单的动作具有鲜明的观点。所有的应用程序应该是这样写的,还是可以用一个视图来管理更多的URL?
我通过Django的看着内置的身份验证的应用程序,发现意见被分成许多,如:Django查看过程应该执行多少操作?
password_reset
, password_reset_confirm
, password_reset_done
, password_reset_complete
这里的每一个简单的动作具有鲜明的观点。所有的应用程序应该是这样写的,还是可以用一个视图来管理更多的URL?
经验法则是不同的URL应该由不同的视图来处理。
在Django 1.3中引入class-based views之前,如果你的视图函数试图处理很多情况,这可能会导致一团糟。但是现在您可以创建基于类的视图,从而允许您对现有视图进行子类化并重新使用这些视图的行为。
例如(对于有多个游戏的网站)。
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
中定义的方法可以在子类中调用和重用。
你可以举一个例子如何渲染PuzzleGameView,然后在get方法中进行一些数据处理?我无法得到它的工作。 – aemdy 2012-04-05 20:27:21
我已将几种方法添加到视图中,但我不确定您的意思。如果您有视图和子类的层次结构,则可以根据需要调用父类的方法。 – 2012-04-05 20:34:27