Django将上下文从调度传递到另一个视图

伯纳德·迪亚曼特

我想通过 SiteDispatchView 根据用户的角色将用户重定向到 ListView 或 DetailView。如果是DetailView,我想传入request.user.siteDetailView,但是遇到:AttributeError: Generic detail view SiteDetailView must be called with either an object pk or a slug in the URLconf.

我的 DetailView 网址是path('<int:pk>/', SiteDetailView.as_view(), name='detail-site'),

(请注意,站点是具有站点和用户模型的 OnetoOneField。)

# views.py
class SiteDispatchView(LoginRequiredMixin, View):
    def dispatch(self, request, *args, **kwargs):
        if request.user.role >= 2:
            return SiteDetailView.as_view()(request, self.request.user.site)
        else:
            return SiteListView.as_view()(request)

class SiteDetailView(LoginRequiredMixin, generic.DetailView):
    template_name = "project_site/site_detail.html"
    context_object_name = "project_sites"
    model = Site

    def get_success_url(self):
        return reverse("project_site:detail-site")
LaCharca软件

问题是您的 SiteDetailView 类需要一个参数 int:pk。因此,您必须将此参数添加到两个类的 return 中:

return reverse("project_site:detail-site", args=(request.user.site.id,))

编辑:

作为提示,您应该在使用类时使用reverse_lazy()而不是reverse()

https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从一个磁通/单声道到另一个传递一个上下文

将上下文传递到子目录

使用Ajax,Django将上下文传递到模板中

如何在ios 9,目标C中使用“在当前上下文中”演示以编程方式导航到另一个视图控制器

将上下文从一个串行器传递到另一个?

django重定向到带有上下文的另一个视图

如何将traceId从gRPC的上下文传递到另一个线程/ threadPool?

如何从子上下文检索对象到另一个上下文?

Django:将上下文传递到另一个视图

如何将OpenGL上下文中的纹理复制到另一个上下文

Django视图“不”将上下文传递到模板以动态填充引导程序下拉菜单

将cujojs / wire上下文“导入”到另一个

将变量从上下文传递到另一个上下文

如何将上下文从脚本传递到另一个类

是否可以将一个数据上下文的属性绑定到另一个数据上下文的属性

Android Studio-如何将上下文值从片段传递到另一个活动?

JS-创建并传递一个函数,该函数将在另一个作用域的上下文中进行评估

将上下文从JUnit Runner传递到黄瓜步骤

将上下文从一个Django视图传递到另一个

将 JQuery 上下文 $(this) 传递给另一个函数并检索上下文数据

将上下文传递给 django-registration 的视图

Android 工作室如何将上下文从 mainactivity 传递到另一个类

将数据从片段传递到另一个片段。未附加到上下文的片段

如何将上下文传递给另一个小部件?

Spring 安全在注销时重定向到另一个上下文

如何在 Django 中获取一个视图的上下文到另一个视图

Django - 上下文 - 如何将上下文传递给所有视图

如何从另一个上下文获取 React 上下文?

如何将上下文传递给不同的视图函数?(Django)