【问题标题】:How to print post data on the same web page?如何在同一网页上打印帖子数据?
【发布时间】:2021-03-03 12:48:06
【问题描述】:

我正在尝试在我的网页上打印来自 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>

我希望用户按下提交按钮后,帖子字段输入立即显示在网页的 h2 标记中提到的“文本”中,而不是像 HttpResponse 那样显示在单独的页面上。

【问题讨论】:

    标签: python django django-forms django-widget


    【解决方案1】:

    您有三个选择来完成这件事: 首先,您将提交时的表单重定向到同一页面并在上下文中传递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 来实时显示数据。 这会很复杂但很好做,你可以在谷歌上搜索如何在 JS 中实时显示表单数据。 谢谢。

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 2019-12-05
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-27
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      相关资源
      最近更新 更多