Tôi rất bối rối trước vấn đề mà tôi có, tôi ước ai đó có thể chỉ ra sai lầm của tôi.Django: Chuyển hướng đến trang hiện tại sau khi phương thức POST hiển thị cảnh báo đăng lại
Tôi có phương thức trong views.py giới hạn đối với mẫu có biểu mẫu trong đó. Mã này trông như thế này:
def template_conf(request, temp_id):
template = ScanTemplate.objects.get(id=int(temp_id))
if request.method == 'GET':
logging.debug('in get method of arachni.template_conf')
temp_form = ScanTemplateForm(instance=template))
return render_response(request, 'arachni/web_scan_template_config.html',
{
'template': template,
'form': temp_form,
})
elif request.method == 'POST':
logging.debug('In post method')
form = ScanTemplateForm(request.POST or None, instance=template)
if form.is_valid():
logging.debug('form is valid')
form.save()
return HttpResponseRedirect('/web_template_conf/%s/' %temp_id)
Hành vi của trang này là thế này: khi tôi nhấn "submit" nút, chương trình đi vào chi nhánh POST
, và thực hiện thành công tất cả mọi thứ trong chi nhánh. Sau đó, HttpResponseRedirect
chỉ chuyển hướng đến trang hiện tại (url đó là url hiện tại, tôi cho rằng phải bằng .
). Sau đó, chi nhánh GET
đã được thực hiện kể từ khi tôi chuyển hướng đến trang hiện tại và trang đã trả về thành công. Tuy nhiên, nếu tôi làm mới trang tại thời điểm này, trình duyệt sẽ trả về một cảnh báo xác nhận:
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?
Nếu tôi xác nhận, dữ liệu bài sẽ được đăng tải vào backend một lần nữa. Có vẻ như trình duyệt vẫn đang giữ dữ liệu POST trước đó. Tôi không biết tại sao điều này xảy ra, xin vui lòng giúp đỡ. Cảm ơn.
+1 Tôi gặp vấn đề tương tự. Tôi có mã tương tự như bạn, nhưng nó chỉ có vẻ hoạt động chính xác trong Firefox. –
@KevinDiTraglia: Ồ, tôi đã không thử firefox trước đây, nhưng có vẻ như firefox DOES làm công việc. Vì vậy, lẻ ...... –
@KevinDiTraglia đó là một lỗi trong Chrome 25, xem câu trả lời của tôi dưới đây. – Alasdair