/ / Чи потрібно коли-небудь створювати нові об'єкти HttpRequest у Django? - django, django-views

Чи потрібно коли-небудь створювати нові об'єкти HttpRequest в Django? - django, django-views

У мене є подання, яке автентифікує користувача. Якщо аутентифікація користувача здійснюється, програма повинна викликати інший режим подання із запитом та користувачем як параметри.

    def home(request):
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
user = authenticate(username=username, password=password)

if user is not None:
return index(request, user)
else:
context = {"error_message": "That username and password don"t exist in our system."}
return render(request, "list/home.html", context)

Отже, коли індекс отримує виклик, запит є тим самим екземпляром, що й запит, надісланий до домашнього подання, так? Мене турбує те, що запит все ще залишається запитом POST, коли він повинен бути запитом GET.

Це помилкова думка? Чи слід створювати новий об'єкт запиту та відправляти його в індекс?

Дякую.

Відповіді:

2 для відповіді № 1

Ви повинні використовувати перенаправити метод

if user is not None:
return redirect(reverse("index"))

0 для відповіді № 2

З відмінних "Які технічні деталі повинен врахувати програміст веб-додатка перед тим, як зробити сайт загальнодоступним?",

Переспрямуйте після POST, якщо цей POST був успішним, щоб запобігти повторній подачі оновлення.

Отже, ви маєте рацію, ви хочете перенаправити, щоб зробитипереконайтеся, що попередня форма не подана. але крім цього, ви не повинні думати про погляди як про безпосередні зв’язки, а натомість заходити в спосіб мислення, що подання - це те, до чого ви потрапляєте, роблячи запит. Отже, як пропонує афілардо, вам слід перенаправити.

return redirect("index")