2017-02-21 4 views
1

У меня есть представление, которое аутентифицирует пользователя. Если пользователь аутентифицирован, программа должна вызывать другое представление с запросом и пользователем в качестве параметров.Нужно ли создавать новые объекты HttpRequest в Django?

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

Вы должны использовать метод redirect

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

От превосходного "What technical details should a programmer of a web application consider before making the site public?",

редирект после POST, если это сообщение было успешным, чтобы предотвратить обновление от представления снова.

Итак, вы правы, вам нужно перенаправить, чтобы убедиться, что предыдущая форма не отправлена. но, кроме того, вы не должны думать о том, что представления являются непосредственно связанными и вместо этого вникают в то, что представление - это то, что вы получаете от запроса. Так, как предполагает афилоард, вы должны перенаправить.

return redirect('index') 
Смежные вопросы