关于Django中使用基于视图类的疑问

linkBG
  • 387

有些模块是不是可以不使用基于视图类呢?
比如 login 和 logout

普通模式:


def logout_views(request):
    logout(request)
    return HttpResponseRedirect('/')

基于视图类:

class LogoutViews(RedirectView):
    url = '/'

    def get(self, request, *args, **kwargs):
        logout(request)
        return super(LogoutViews, self).get(request, *args, **kwargs)

类似于这个,普通模式代码量少,并且一目了然。反而基于视图类的有点。。。。

基于视图的提出的观点是不要减少代码量然后复用吗?
那么这种情况怎么选者呢?
谢谢

回复
阅读 1.6k
2 个回答

如果这个请求只是一个Restful API,不需要前台渲染的话,就不需要视图类了。

有些功能不需要你去写逻辑了,比如 logout.

我一般都是直接用系统的from django.contrib.auth.views import logout_then_login,然后配下url就行

至于用基于方法的视图,还是基于类的视图,这个看你的选择了。

一般基于类会更面向对象,喜欢面向对象语言的更喜欢用类视图来写,即使会多些几行代码,这样感觉有归属感,没错,我是一个对象,不是一个路人甲

类的写法在 写 Mixin时会非常有用的,即用来写继承关系时。当然,你也可以写个通用方法,在每个需要的地方手动调一下也是没人管你的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏