Django - 如何清除来自先前表单提交的缓存结果?

在 Django 中,使用 Form 类创建了一个表单,该表单包含一个字符串字典。表单中包含一个提交按钮和一个预览按钮。当点击预览按钮后,会发送一个 POST 请求,并且表单中的字符串将自动恢复。然而,如果在不提交表单的情况下,直接访问该页面并输入信息,点击预览按钮时,先前预览中保存的字典信息仍然存在。如何清除这些信息?

2、解决方案:

1)在 Form 类中添加一个清除字典的方法:

class ListingImagesForm(forms.Form):
    # ...
    def clear_dictionaries(self):
        self.statuses = {}
        self.thumbnail_urls = {}
        self.image_urls = {}

2)在视图中调用清除字典的方法:

@login_required
def add(request):
    # ...
    else:
        form = GeneralListingForm()
        image_form = ListingImagesForm()
        image_form.clear_dictionaries()

3)在视图中使用清除后的字典:

@login_required
def add(request):
    # ...
    else:
        form = GeneralListingForm()
        image_form = ListingImagesForm()
        image_form.clear_dictionaries()

        return render_to_response('add_listing.html', {'form': form, 'image_form' : image_form, 
                                                'preview': preview, 'added': added,
                                                'owner': owner, 'listing': new_listing,
                                                'currentmaintab': 'listings',
                                                'currentcategory': 'all'},
                                                                        context_instance=RequestContext(request))

4)或者,在视图中使用新的 Form 实例:

@login_required
def add(request):
    # ...
    else:
        form = GeneralListingForm()
        image_form = ListingImagesForm()

        return render_to_response('add_listing.html', {'form': form, 'image_form' : image_form, 
                                                'preview': preview, 'added': added,
                                                'owner': owner, 'listing': new_listing,
                                                'currentmaintab': 'listings',
                                                'currentcategory': 'all'},
                                                                        context_instance=RequestContext(request))

代码例子:

# 在 Form 类中添加清除字典的方法:

class ListingImagesForm(forms.Form):
    # ...
    def clear_dictionaries(self):
        self.statuses = {}
        self.thumbnail_urls = {}
        self.image_urls = {}


# 在视图中调用清除字典的方法:

@login_required
def add(request):
    # ...
    else:
        form = GeneralListingForm()
        image_form = ListingImagesForm()
        image_form.clear_dictionaries()


# 在视图中使用清除后的字典:

@login_required
def add(request):
    # ...
    else:
        form = GeneralListingForm()
        image_form = ListingImagesForm()
        image_form.clear_dictionaries()

        return render_to_response('add_listing.html', {'form': form, 'image_form' : image_form, 
                                                'preview': preview, 'added': added,
                                                'owner': owner, 'listing': new_listing,
                                                'currentmaintab': 'listings',
                                                'currentcategory': 'all'},
                                                                        context_instance=RequestContext(request))


# 或者,在视图中使用新的 Form 实例:

@login_required
def add(request):
    # ...
    else:
        form = GeneralListingForm()
        image_form = ListingImagesForm()

        return render_to_response('add_listing.html', {'form': form, 'image_form' : image_form, 
                                                'preview': preview, 'added': added,
                                                'owner': owner, 'listing': new_listing,
                                                'currentmaintab': 'listings',
                                                'currentcategory': 'all'},
                                                                        context_instance=RequestContext(request))

你可能感兴趣的:(django,sqlite,数据库)