如何在django中清除表单数据

时间:2014-03-25 07:56:56

标签: python django

我创建了django form.py文件:

from django import forms
from models import ResumeModel


class ResumeForm(forms.ModelForm):
    username = forms.CharField(max_length = 200)
    first_name = forms.CharField(max_length = 200)
    last_name = forms.CharField(max_length = 200)
    fathers_name = forms.CharField(max_length = 200)
    email = forms.EmailField(required=True, label='Your e-mail address')
    message = forms.CharField(widget=forms.Textarea)
    class Meta():
        model = ResumeModel
        fields =('username','first_name','last_name','fathers_name','email','message')

views.py:

def save(request):
    if 'submit' in request.POST:
        form = ResumeForm(request.POST)
        if form.is_valid():
            form.save()
            form = ResumeForm()
            return render(request, '/success/', {'form': form})
    else:
        form = ResumeForm()
    args = {}
    args.update(csrf(request))
    args['form'] =form
    return render_to_response('create.html',args)

urls.py:

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^save/', 'Resume.views.save'),
    url(r'^success/$', TemplateView.as_view(template_name='success.html')),
)

现在一切正常。问题是,当我提交表单时,它移动到成功页面,当我回到上一页/ save / page时,它保存我提交的字段中的所有值。如果按back button to go back to that form page having url as "/save/ "

,如何清除字段

2 个答案:

答案 0 :(得分:1)

这是关于浏览器的行为。浏览器在其缓存中显示页面而不是调用新页面。

你可以通过使用javascript来解决这个问题。不幸的是浏览器也没有再次运行javascript代码。

但你可以试试:

$(window).bind("pageshow", function() {
  // Clean form values
});

由JQuery

答案 1 :(得分:1)

这是一个浏览器实现细节。您可以使用JavaScript破解它或破坏缓存等。this stackoverflow question中讨论了该主题。

然而,更好的UI方法可能是使用AJAX来POST表单的序列化版本。如果您在view中成功验证并处理该表单(在您的简历模型表中插入新行等),则可以发送一个JSON响应,该响应可能会调用某些JavaScript来清除表单字段(可能使用{{ 3}})。然后,如果需要,用户可以轻松地提交另一个表单。

另请注意,建议您在成功POST后使用.reset()(目前您有render()个回复)。这会阻止用户再次重新提交表单,并可能会复制数据库中的行等。