【问题标题】:How can I clear only one specific form field after submit?提交后如何只清除一个特定的表单字段?
【发布时间】:2017-05-21 16:12:05
【问题描述】:

我正在创建一个聊天应用程序,其中有 2 个字段,接收者的姓名和正文, 我想在表单提交后清除comment字段的正文而不清除接收者的姓名,我该如何实现?

views.py

if request.method == 'POST':
    form = userCommentForm(request.POST, request.FILES)
    if form.is_valid():
        form.save(client=request.user)
        > clear comment field.

forms.py(“worker”字段是接收者的姓名。)

class userCommentForm(forms.Form):
    worker = CommaSeparatedUserField(label=_(u"worker"), widget=forms.TextInput(attrs={'readonly': 'readonly'}))
    comment = forms.CharField(label=_(u"comment"), widget=forms.Textarea())

    def save(self, client):
        workers = self.cleaned_data['worker']
        comment = self.cleaned_data['comment']
        message_list = []
        for worker in workers:
            msg = userComment(client=client, worker=worker, comment=comment,)

            if None is not None:
                msg.parent_msg = None
                None.save()
            msg.save()
            message_list.append(msg)

        return message_list
        form.save(client=request.user)

有什么建议吗?

【问题讨论】:

  • clear body field 是什么意思?
  • 表单提交后,comment字段应该被清除

标签: python django django-forms


【解决方案1】:

你这里有一些误解。在 Web 应用程序中提交并处理表单后,您不应再继续处理当前请求的任何内容,而应将 GET 请求发送到另一个网页。因此,提交后无法将表单字段设置为空。

我的建议是,当您的表单被提交时,您重定向到同一页面,但使用 GET 参数存储提交的名称,然后在视图的开头您将名称作为初始参数提供给表单:

def view_method(request):
    default_receiver = request.GET.get('receiver', None)
    form = userCommentForm(request.POST or None,
                           request.FILES or None,
                           initial={'worker': default_receiver})
    if form.is_valid():
        form.save(client=request.user)
        current_receiver = form.cleaned_data['worker']
        response = redirect('current-page-url-name')
        response['Location'] += '?receiver=%s' % current_receiver
        return response

【讨论】:

  • 嗯,我也是这么想的,我想检查一下是否可行,因为稍后我想添加 ajax,所以表单不会每次都重定向,comment 字段得到重置。
  • 然后使用ajax发送数据,返回后使用javascript清理评论。
猜你喜欢
  • 2020-03-29
  • 2014-10-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多