【问题标题】:In Django, how can I acccess request.meta and the http_referer in a class-based view like UpdateView?在 Django 中,如何在 UpdateView 等基于类的视图中访问 request.meta 和 http_referer?
【发布时间】:2021-02-07 18:56:51
【问题描述】:

嗯,其实问题就在标题中:)

根据调用更新的引用者,我想要一个具有不同重定向的 UpdateView。

更新:最初,我的问题具有误导性。我不仅想访问元数据,还想访问导致更新视图的站点的 http_referer。

【问题讨论】:

    标签: django


    【解决方案1】:

    我通过使用解决了它

      def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['ref'] = self.request.META['HTTP_REFERER']
            return context
        def get_success_url(self):
            if 'uebersichteingaben_nichtabgeschlossen' in self.request.POST['ref']:
                return reverse_lazy(url_app_name + 'uebersichteingaben_nichtabgeschlossen')
            else:
                return reverse_lazy(url_app_name + 'uebersichteingaben_alle')
    

    在 CBV 中。我使用 context['ref'] 作为模板中的隐藏输入。

    【讨论】:

      【解决方案2】:

      这真的取决于一个观点。如果您使用通用 CBV,您应该致电 self.request.meta 了解更多信息 here。但是如果你只是扩展View 类,你可以像docs 那样做

      from django.http import HttpResponse
      from django.views import View
      
      class MyView(View):
          def get(self, request):
              # <view logic>
              request.meta
              return HttpResponse('result')
      

      【讨论】:

      • 我想要通用的 CBV。 class RgUpdate(UpdateView): model = ... template_name = ... fields = ... def get_success_url(self): [这里我想说 if self.request.meta['http_referer'] == .. .: 返回反向 ...
      • 谢谢,但是当我访问 self.request.meta['HTTP_REFERER'] 时,我只获得更新视图的 URL,而不是我指向更新视图的页面的 URL。跨度>
      • 你的问题是“在 Django 中,如何在像 UpdateView 这样的基于类的视图中访问 request.meta?”也被正确回答“嗯,实际上问题在标题中:)”确认这是你的问题。推荐人部分是另一个问题。让其他人看到您提出的问题是否有答案。
      猜你喜欢
      • 2022-07-02
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 2013-03-08
      • 2017-10-07
      • 2013-09-23
      相关资源
      最近更新 更多