如何修复“NameError: name 'context' is not defined”

特佩霍尔姆

我想在我的博客应用程序的评论和回复部分使用 ajax。在基于函数的视图中一切正常,但我想做基于类的视图。

***My function based view***
def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    comments = Comment.objects.filter(post=post, reply=None).order_by('-id')
    if request.method == 'POST':
        comment_form = CommentForm(request.POST or None)
        if comment_form.is_valid():
            content = request.POST.get('content')
            reply_id = request.POST.get('comment_id')
            comment_qs = None
            if reply_id:
                comment_qs = Comment.objects.get(id=reply_id)

            comment = Comment.objects.create(post=post,
                                             user=request.user,
                                             content=content,
                                             reply=comment_qs)
            comment.save()

    else:
        comment_form = CommentForm()
    context = {
        'title': 'blog',
        'post': post,
        'comments': comments,
        'comment_form': comment_form,
    }
    if request.is_ajax():
        html = render_to_string('blog/comments.html', context, request=request)
        return JsonResponse({'form': html})

    return render(request, 'blog/post_detail.html', context)

***My class based view***
class PostDetailView(FormMixin, DetailView):
    model = Post
    form_class = CommentForm

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        post = get_object_or_404(Post, id=self.object.id)
        comments = Comment.objects.filter(post=post, reply=None).order_by('-id')
        context['title'] = 'Blog Detail'
        context['comments'] = comments
        context['comment_form'] = self.get_form()
        return context

    def post(self, request, *args, **kwargs):
        #if request.user.is_authenticated():

        self.object = self.get_object()
        form = self.get_form()
        if form.is_valid():
            content = request.POST.get('content')
            reply_id = request.POST.get('comment_id')
            comment_qs = None
            if reply_id:
                comment_qs = Comment.objects.get(id=reply_id)
            comment = Comment.objects.create(post=self.object,
                                             user=request.user,
                                             content=content,
                                             reply=comment_qs)
            comment.save()
            #return HttpResponseRedirect(self.object.get_absolute_url())
        else:
            return self.form_invalid(form)

        if request.is_ajax():
            html = render_to_string('blog/comments.html', context, request=request)
            return JsonResponse({'form': html})

    def get_success_url(self):
        return reverse('post-detail', kwargs={'pk': self.kwargs['pk'], })

在我的基于类的视图中,if request.is_ajax(): html = render_to_string('blog/comments.html', context,request=request) return JsonResponse({'form': html})它部分显示了上下文未定义的错误。那么如何解决这个问题或如何将它包含在函数中,因为我已经有了上下文。我的基于函数的视图代码没有问题,它按预期工作。

美国

这是因为。您使用上下文变量,但尚未定义。

if request.is_ajax():
    html = render_to_string('blog/comments.html', context, request=request)
    return JsonResponse({'form': html})

试试这个得到上下文:

context = self.get_context_data(object=self.object)

你可以通过跟踪DetailView的源代码看到这一点,你会看到DetailView继承自BaseDetailView,你会发现这个脚本来获取上下文

希望这有帮助!

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何修复“NameError: name 'color' is not defined”?

如何在 python 中关于海面温度的图中修复“NameError: name 'cartopy' is not defined'?

如何解决 NameError: name 'xx' is not defined?

如何解决错误 NameError: name 'SparkConf' is not defined in pycharm

如何正确配置python 3的使用避免NameError: name '' is not defined

导入 kafka 给出“NameError: name 'true' is not defined”

NameError: ("name 'true' is not defined", 'occurred at index 0')

如何在 python 3.0 中修复这种类型的错误?每当我使用传递参数(dict{})时,它都会显示这种类型的错误“NameError: name 'P' is not defined”

iPython调试器引发`NameError:name ... not defined`

不明白这个“NameError: name 'self' is not defined”错误

在类中导入模块时出现“NameError: name [module] is not defined”

“NameError: name 'update' is not defined” 使用数据表时出错

Scrapy:在scrapy 中使用SQLAlchemy 有“NameError: name 'connection' is not defined”

为什么我会收到“NameError: name 'self' is not defined”?

我有一个错误:NameError: name 'GameDisplay' is not defined

错误“NameError: name 'self' is not defined”即使我声明了“self”

raise self._value NameError: name 'global_df' is not defined

无法在 18.04 中添加 PPA 密钥:NameError: name 'KUrl' is not defined

试图从父类继承变量“NameError: name 'r' is not defined”

Django连接mysql问题,NameError: name '_mysql' is not defined

在 Django 中使用类型提示 Any - NameError: name 'Any' is not defined

为什么python在定义时返回“NameError:name 'correct' is not defined?

NameError: name 'i' is not defined - 为什么会发生这种情况?

当我在请求输入时尝试中断 while 循环时,如何克服“NameError: name 'x' is not defined”?

修复 NameError: NameError: name 'key_p' 未定义?

如何修复“ReferenceError: hello is not defined”

为什么此重新加载失败并显示“NameError: name <xxx> is not defined”?

为什么会出现 NameError 的错误:name 'file' is not defined in python 3

NameError: name '' is not defined - 将函数返回作为输入传递给另一个函数