gpt4 book ai didi

javascript - Django 不通过 DetailView 重新渲染 css 和 JS

转载 作者:行者123 更新时间:2023-12-02 22:13:34 26 4
gpt4 key购买 nike

我在 DetailView 类中使用了内联表单集。

class DetailView(DetailView)

为了正确显示页面,我使用了get_context_data函数:

def get_context_data(self, *args, **kwargs):
context = super(QuestionDetailView, self).get_context_data(**kwargs)
context['formset'] = self.get_formset()
context['question'] = self.get_object()
return context

CSS 和 JS 在这个页面上运行得很好。但是,我不知道如何在表单集无效的情况下使页面也能很好地呈现

def post(self, request, slug):
[...]
formset = self.AnswerFormset(request.POST, instance=self.get_object()) # create/edit an answer
if formset.is_valid():
return self.form_valid(formset, slug)
else:
return render(request, 'questions/detail.html', {'slug': slug, 'formset': formset,'question':self.get_object()})


def form_valid(self, formset, slug):
formset.save()
return redirect('questions:question_detail', slug=slug)

如果表单集有效,则所有样式和 Java 脚本都可以正常工作。如果表单无效,则位于 questions/detail.html 上的样式和脚本将不起作用。

我花了很多时间试图以某种方式向 get_context_data 传达错误,但我失败了并单独渲染了页面(return render(request, 'questions/detail.html', {'slug': slug, 'formset ': 表单集,'问题':self.get_object()})

您知道如何正确呈现表单错误的页面吗?干杯

最佳答案

您重写 postform_valid 方法的方式表明(对我来说)使用 DetailView 并不是最合适的。为什么不使用基于 FormView 类的 View 呢?您可以查看this link if you want to read more

它将带来您需要的 form_validpost 等定义,而无需覆盖它们。

此外,如果您想向上下文添加更多元素,则覆盖 get_context_data 的方法是一个很好的方法,因此如果您想从模板访问所需的对象,请保持这种方式最初通过您的 DetailView 显示。

但是因为您需要对表单进行检查,所以我肯定会使用 FormView 而不是 DetailView,然后通过 context< 添加缺少的内容.

关于javascript - Django 不通过 DetailView 重新渲染 css 和 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59471525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com