【问题标题】:Django class UpdateViewDjango 类更新视图
【发布时间】:2020-09-15 13:57:27
【问题描述】:

我有这个视图,我使用这个代码

class post_Wells(UserPassesTestMixin, LoginRequiredMixin, UpdateView):
    model = Wellinfo
    template_name = 'Home/WELLINFO/detailw2.html'
    form_class = NewWells
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)
    def test_func(self):
        post = self.get_object()
        if self.request.user== post.author:
            return True
        else:
            return True

一切正常,但我想从这个类发送其他数据

例如我想渲染这段文字:

    context ={
    'Mytext': 'This well is Open'}

在这个类里面怎么做?

【问题讨论】:

  • 覆盖 get_context_data

标签: django django-views


【解决方案1】:

您可以通过覆盖上下文的方法来做到这一点,get_context_data

您应该为该网站添加书签; http://ccbv.co.uk/

此特定视图的文档在这里; http://ccbv.co.uk/projects/Django/3.0/django.views.generic.edit/UpdateView/#get_context_data

考虑到良好的实践,您的课程将成为;


class PostWells(UserPassesTestMixin, LoginRequiredMixin, UpdateView):

    form_class = NewWells
    model = Wellinfo
    template_name = 'Home/WELLINFO/detailw2.html'

    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

    def test_func(self):
        post = self.get_object()
        if self.request.user== post.author:
            return True
        else:
            return True

    def get_context_data(self, **kwargs):
        """Insert your data into the context dict."""
        context = super().get_context_data(**kwargs)

        context['Mytext'] = 'This well is Open'

        return context

【讨论】:

    【解决方案2】:

    您可以使用get_context_data() 尝试这样的操作。

    class post_Wells(UserPassesTestMixin, LoginRequiredMixin, UpdateView):
        model = Wellinfo
        template_name = 'Home/WELLINFO/detailw2.html'
        form_class = NewWells
        def form_valid(self, form):
            form.instance.author = self.request.user
            return super().form_valid(form)
        def test_func(self):
            post = self.get_object()
            if self.request.user== post.author:
                return True
            else:
                return True
        
         def get_context_data(self, **kwargs):
             context = super().get_context_data(**kwargs)
             context['Mytext'] = 'This well is Open'
             return context
                
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-29
      • 2014-01-26
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      相关资源
      最近更新 更多