【问题标题】:Form sends <textarea> tag along with the body表单与正文一起发送 <textarea> 标签
【发布时间】:2019-01-03 06:21:38
【问题描述】:

我想将此表单作为 Django 模板提交:

<form action="/feedback" method="post">
     {% csrf_token %}
     <div class="form-group">
       {% if form.title.errors %}
       <div class="alert alert-danger" role="alert"> {{ form.title.errors }}</div>
       {% endif %}

       <div class="row">
        <div class="col-xs-6 col-xs-push-6">
          <div class="form-group">
           <input id="id_title" class="form-control" name="title" value="{{title}}" >
         </div>
       </div>
     </div>

   </div>

   {% if form.body.errors %}
   <div class="alert alert-danger" role="alert">{{ form.body.errors }}</div>
   {% endif %}

   <div class="form-group">
    <textarea  class="form-control" id="id_body" name="body" rows="20">{{body}}</textarea>
  </div>

    <button type="submit" value="Submit" id="send"> Send</button>
  </div>     
</form>

问题是收到的表单正文包含&lt;textarea&gt;这样的标签:

<textarea cols="40" id="id_body" name="body" rows="10">
Your site is good!</textarea>

但我希望它是:

Your site is good!

我尝试了不同的技巧,例如更改 textarea 类,但无法修复它。非常感谢您的帮助。

更新:这里是观点:

def feedback(request):
    args = {}
    if request.method == 'POST':
        form = FeedbackForm(request.POST)

        if form.is_valid():           
            d = form.save(commit = False)
            try:
                author =  get_user(request)
            except:
                author = 'Guest'
            d.title = form.cleaned_data['title']
            d.body = form['body']
            d.published = False
            d.save()

            return render_to_response('feedback/sent_thanks.html',
                                      context_instance=RequestContext(request)) 


        else:
            args.update(csrf(request))
            args['title'] = request.POST['title']
            args['body']= request.POST['body']
            args['form'] = form
            return render_to_response('feedback/send_form.html', args, 
                                      context_instance=RequestContext(request))    

    else:        
        form = FeedbackForm()
        args.update(csrf(request))
        args['form'] = form
        return render_to_response('feedback/send_form.html', args, 
                                  context_instance=RequestContext(request))

【问题讨论】:

  • 显示您的feedback 视图
  • @Satendra 我添加了视图。
  • 确保sent_thanks.html 中没有textarea。因为您将其作为表单有效响应发送
  • sent_thanks.html 只是表单正确提交后发送回用户的确认 html。它与表单的主体无关。

标签: html django django-forms


【解决方案1】:

删除textarea 包装模板中的{{body}} 并在您的FeedbackForm 中添加textarea 属性。

class FeedbackForm(forms.ModelForm):
    class Meta:
            model = FeedbackForm
            fields = ('body', )
            widgets={'body': forms.Textarea(attrs={'rows': 20})}

【讨论】:

  • 你能添加你建议的html吗?当我删除 textarea 并仅将 {{body}} 放在那里时,它不会显示。
  • 删除这一行 并保留 {{body }} 标签。 {{body}} 标签已经是一个 textarea,所以你不需要再用 textarea 包裹它。
  • 结果会是这样的:
    {{body}}
  • 好吧,所以把 {{body}} 替换为 {{form.body}},我相信用 forloop 会更好。
  • 使用{{form.body}} 出现文本区域。但我仍然在视图中得到标签。
【解决方案2】:

我认为问题出在视图内部而不是模板。调试主体变量。

或者在加载模板的地方发布。

【讨论】:

  • 意见很好。当我试图用引导类“美化”表单时,问题就出现了。在此之前,它按预期收到了表单正文。
猜你喜欢
  • 2013-09-19
  • 1970-01-01
  • 2014-01-22
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 2012-06-07
  • 2021-12-11
相关资源
最近更新 更多