2012-04-05 36 views
0

我通过Django的看着内置的身份验证的应用程序,发现意见被分成许多,如:Django查看过程应该执行多少操作?

password_resetpassword_reset_confirmpassword_reset_donepassword_reset_complete

这里的每一个简单的动作具有鲜明的观点。所有的应用程序应该是这样写的,还是可以用一个视图来管理更多的URL?

回答

0

经验法则是不同的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中定义的方法可以在子类中调用和重用。

+0

你可以举一个例子如何渲染PuzzleGameView,然后在get方法中进行一些数据处理?我无法得到它的工作。 – aemdy 2012-04-05 20:27:21

+0

我已将几种方法添加到视图中,但我不确定您的意思。如果您有视图和子类的层次结构,则可以根据需要调用父类的方法。 – 2012-04-05 20:34:27

相关问题