Я делаю Танго с Django учебник и я закончил учебники успешно, однако я заметил в официальном Джанго Опросы учебнике следующее:Должен ли я использовать HttpResponseRedirect здесь?
def vote(request, question_id):
p = get_object_or_404(Question, pk=question_id)
try:
selected_choice = p.choice_set.get(pk=request.POST['choice'])
except (KeyError, Choice.DoesNotExist):
# Redisplay the question voting form.
return render(request, 'polls/detail.html', {
'question': p,
'error_message': "You didn't select a choice.",
})
else:
selected_choice.votes += 1
selected_choice.save()
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))
деталь, чтобы заметить здесь «Всегда возвращать HttpResponseRedirect после успешно работая с данными POST ». Однако, в танго с Джанго учебника:
def add_page(request, category_name_url):
context = RequestContext(request)
category_name = decode_url(category_name_url)
if request.method == 'POST':
form = PageForm(request.POST)
if form.is_valid():
page = form.save(commit=False)
try:
cat = Category.objects.get(name=category_name)
page.category = cat
except Category.DoesNotExist:
return render_to_response('rango/add_category.html', {}, context)
page.views = 0
page.save()
return category(request, category_name_url)
else:
print(form.errors)
else:
form = PageForm()
return render_to_response('rango/add_page.html',
{'category_name_url': category_name_url,
'category_name' : category_name,
'form' : form}, context)
Обратите внимание на отсутствие HttpResponseRedirect несмотря на использование данных POST. Я не знаю, правильно это или нет?
Я смотрел здесь: Django HttpResponseRedirect
Здесь: Django: HttpResponseRedirect not working
Кроме того, здесь: Django form redirect using HttpResponseRedirect
И, наконец, здесь: Django: What is the difference b/w HttpResponse vs HttpResponseRedirect vs render_to_response
Я до сих пор не совсем понимаю, как использовать HttpResponseRedirect. Пожалуйста помоги.
Заранее благодарим всех, кто отвечает.
+1 потому что вы провели очень тщательное исследование. :) –
Да, TWD недвусмысленно неправильно здесь. Кто-нибудь знает, принимают ли они патчи? –
@BlueIce Я научился исследовать перед публикацией. Я не новичок в форумах, новых для SO, и я приношу свои извинения за то, что вы не ответили раньше. Я полагал, что никто не отвечал на мой вопрос, потому что я не получал и не писал по электронной почте или что-то еще. Спасибо за все замечательные ответы. Я не знаю, принимают ли они патчи. Я поднял вопрос. Здесь: https://github.com/leifos/tango_with_django/issues/16 –