如何在同一个网页上打印post条数据?

How to print post data on the same web page?

我正在尝试在我的网页上打印来自 django 表单的 POST 数据,就在我的表单下方。我可以通过 HttpResponse 在不同的页面上打印它,但是当用户按下提交按钮时我希望它在同一页面上。

Views.py

    from django.views.generic import TemplateView
    from django.shortcuts import render
    from django import forms
    from django.http import HttpResponseRedirect, HttpResponse
    from home.forms import HomeForm

   def home(request):
        def get(request):
        form = HomeForm()
        return render(request, 'home/home.html', {'form':form})

   if request.method=='GET':
        response=get(request)
        return response

   elif request.method == 'POST':
    
       form = HomeForm(request.POST)
       if form.is_valid():
        text = HomeForm('post')
        return HttpResponse('post')
    
    

   else:
      form = HomeForm()
   return render(request, 'home/home.html', {'form':form})

Forms.py

from django import forms

class HomeForm(forms.Form):
  post = forms.CharField( widget= forms.TextInput() )
  

Html模板

<div class="container">
<form method='post'>

{% csrf_token %}
{{ form.as_p }} 
<input type="submit" value="submit" class="btn btn-danger">

</form>
<h2>{{ text }}</h2>
</div>

我希望 post 字段输入在用户按下提交按钮后立即显示在网页 h2 标记中提到的 'text' 中,而不是在单独的页面上显示HttpResponse 确实如此。

你有三种选择来完成这件事: 首先,您将提交时的表单重定向到同一页面,并在上下文中传递 request.POST.DATA,然后您就可以轻松地显示它。 喜欢:

def home(request):
        def get(request):
        form = HomeForm()
        return render(request, 'home/home.html', {'form':form})

   if request.method=='GET':
        response=get(request)
        return response

   elif request.method == 'POST':
    
       form = HomeForm(request.POST)
       if form.is_valid():
        text = HomeForm('post')
        # return HttpResponse('post')
        context = {'text' : text, 'form' : form,}
        return render(request, 'home/home.html', context)
    
    

   else:
      form = HomeForm()
   return render(request, 'home/home.html', {'form':form})

第二个选项是以模型的初始值形式显示自身:

form = HomeForm(initial = {'text' : modelsFile.Model.object}) # models.ModelName.text

第三个选项是使用JavaScript和JQuery来实时显示数据。 那会很复杂但是很好做,你可以在 google 上搜索如何在 JS 中实时显示表单数据。 谢谢。