基于Django类的视图-如果用户经过身份验证,则为ListView;如果用户未通过身份验证,则为FormView;相同的URL
当访问者注销并访问我的主页时,我希望他们看到一份注册表。当用户登录时,他们将被重定向回主页,但它将显示类似listview的视图 实现这一点的最佳方法是同时对基于Django类的视图-如果用户经过身份验证,则为ListView;如果用户未通过身份验证,则为FormView;相同的URL,django,django-class-based-views,Django,Django Class Based Views,当访问者注销并访问我的主页时,我希望他们看到一份注册表。当用户登录时,他们将被重定向回主页,但它将显示类似listview的视图 实现这一点的最佳方法是同时对ListView和FormView进行子类化,并重写获得所需行为所需的每个方法吗?还是有更好的办法?检查每个方法中是否对用户进行了身份验证似乎不像Django方法那样。希望有一个聪明的设计模式来实现这一点,我不知道 class HomepageView(ListView, FormView): def get_template_n
ListView
和FormView
进行子类化,并重写获得所需行为所需的每个方法吗?还是有更好的办法?检查每个方法中是否对用户进行了身份验证似乎不像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,可以执行您想要的操作。然后,您可以将其
表单
更改为您想要的表单