"Возвращение на эту страницу может привести к повторению любых действий, которые Вы предприняли" - Django
у меня есть форма на моем сайте, который создает запись в базе данных. Поэтому каждый раз, когда я обновляю страницу, Я сначала получаю это сообщение:
The page that you're looking for used information that you entered.
Returning to that page might cause any action you took to be repeated.
Do you want to continue?
очевидно, я не хочу иметь одну и ту же информацию более одного раза в моей базе данных.
на всякий случай: это мой код (я знаю, что есть много дерьма, которое должно быть удалено):
#views.py
@login_required
def subject(request,username, subject_name):
subject_id = Subjects.objects.filter(user = request.user).get(name=subject_name)
#Upload form
if request.method == "POST":
if "upload-b" in request.POST:
form = ContentForm(request.POST, request.FILES, instance=subject_id)
if form.is_valid(): # need to add some clean functions
up_f = FileDescription.objects.get_or_create(subject=subject_id,
subject_name=subject_name,
file_type=request.POST['file_type'],
file_uploaded_by = username,
file_name=request.POST['file_name'],
file_description=request.POST['file_description'],
image = request.FILES['image'],
)
form = ContentForm()
#Show uploaded files with respect to clicked session (Homework, Class , Random ... )
homework_files = Homework.homework.filter(subject_name__exact=subject_name,
file_uploaded_by__exact=username)
class_files = ClassPapers.classpapers.filter(subject_name__exact=subject_name)
random_files = RandomPapers.randompapers.filter(subject_name__exact=subject_name,
file_uploaded_by__exact=username)
return render_to_response('subject_content.html', {'form':form,
'subject_name': subject_name,
'class_files': class_files,
'homework_files': homework_files,
'class_files': class_files,
'random_files': random_files,
},
context_instance=RequestContext(request))
#forms.py:
class ContentForm(forms.ModelForm):
file_name =forms.CharField(max_length=255, widget=forms.TextInput(attrs={'size':20}))
file_description = forms.CharField(widget=forms.Textarea(attrs={'rows':4, 'cols':25}))
class Meta:
model = FileDescription
exclude = ('subject', 'subject_name', 'file_uploaded_by')
#template
<div id="sbj-creation-frm">
<h3>Upload File</h3>
<form action="." method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit" name="upload-b" class="btn-create" />
</form>
</div>
2 ответов
это сообщение из браузера; и оно будет отображаться в любое время при попытке обновить страницу, которая была отображена в результате запроса POST.
Он не имеет никакого отношения к вашему коду, браузер будет отображать одно и то же сообщение на всех веб-сайтах, где вы пытаетесь обновить страницу (нажмите Ф5 например), который был отображен в результате предыдущего запроса POST.
чтобы этого не произошло, убедитесь, что все запросы POST перенаправляются на другое представление завершение; а не сами шаблоны рендеринга.
просто перенаправить страницу на текущую страницу после вставки , это очистит все значения и избежать добавления дубликатов записей !
пример:
protected void btnAdd_Click(object sender, EventArgs e)
{
//your code
Response.Redirect("Currentpage.aspx",true);
//or
Response.Redirect(Request.Url.AbsoluteUri);
}