0

有一个简单的 Django 应用程序,由于某种原因,GET 按预期呈现模板,但使用完全相同代码的 POST 不会出错,但也不会呈现:

我花了很多时间寻找原因,并假设我错过了一些愚蠢的东西或 Django 2.2 的变化?

class MyView(View):
    template_name = "index.html"

    def get(self, request):
        return render(request, self.template_name, context={'test':'get_test'})

    def post(self, request):
        return render(request, self.template_name, context={'test':'post_test')
urlpatterns = [
    path('index/', MyView.as_view(), name='index'),
]

<h2>{{ test }}</h2>

希望我没有将示例简化到超出意义的范围,但在示例中,我希望在应该再次渲染整个页面的 POST 之后简单地渲染 post_test。

4

1 回答 1

0

假设您有一个表单来发布带有 Forms.py 中的 NameForm 类的数据,form.html 带有用于发布的表单。

class MyForm(View):

form_class = NameForm
initial = {'key': 'value'}
template_name = 'form.html'

def get(self, request, *args, **kwargs):
    form = self.form_class(initial=self.initial)
    return render(request, self.template_name, {'form': form})

def post(self, request, *args, **kwargs):
    form = self.form_class(request.POST)
    if form.is_valid():
        # <process form cleaned data>
        return HttpResponseRedirect('/success/')

    return render(request, self.template_name, {'form': form})
于 2019-04-09T13:07:04.063 回答