Django 基于类的视图 - 如果用户经过身份验证,则为 ListView,如果用户未通过身份验证,则为 FormVi



当访问者注销并访问我的主页时,我希望他们看到注册表。当用户登录时,他们将被重定向回主页,但它将显示类似列表视图的视图。

实现此目的的最佳方法是对ListViewFormView进行子类化,并覆盖获得我想要的行为所需的每个方法?还是有更好的方法?检查用户是否在每种方法中都经过身份验证似乎不像 Django 的方法。希望有一种我不知道的智能设计模式方法来做到这一点。

class HomepageView(ListView, FormView):
def get_template_names(self):
if self.request.user.is_authenticated:
return ['homepage/loggedin_index.html']
else:
return ['homepage/loggedout_index.html']
def get_context_data(self, **kwargs):
if self.request.user.is_authenticated:
...
else:
...
def ... and so on

我的必备要求是,登录和注销用户的 URL 必须解析为根 URL,因为它是主页。

from django.urls import path
from .views import HomepageView
app_name = 'homepage'
urlpatterns = [
path('', HomepageView.as_view(), name='index'),
]

还有一个CreateListView可以做你想做的事。然后,您可以将其form更改为所需的。

相关内容

最新更新