2016-10-08 2 views
5

Что разница междуКакая разница render() и redirect() в Django?

def post(self, request, *args, **kwargs): 
    if form.is_valid(): 
     order = form.save(commit=False) 
     order.user = request.user 
     order.save() 
     return redirect('orders:success') 

и

def post(self, request, *args, **kwargs): 
    if form.is_valid(): 
     order = form.save(commit=False) 
     order.user = request.user 
     order.save() 
     return render(
      request, 
      'orders/success.html', 
      {} 
     ) 

Я думаю, что это абсолютно то же самое.

Любая разница?

+2

Это две совершенно разные вещи, и это довольно озадачивает, почему вы думаете, что они одинаковы. –

+0

как новичок, я думаю, совершенно ясно, почему можно подумать, что они одинаковы: или, более конкретно, почему в этом случае у них будет тот же конечный результат. Я тоже пытаюсь выяснить, что предпочтительнее ... –

ответ

3

рендер функцию Combines a given template with a given context dictionary and returns an HttpResponse object with that rendered text.

Вы запрашиваете страницу и функция render возвращает его.

Функция redirect отправляет другой запрос данному URL-адресу.

3

Оба совершенно разные, где перенаправление дает HttpResponseRedirect для аргумент, который вы передали.

пример

return redirect('https://example.com/') 

приведет вас к https://example.com/ странице

return render(request,'/result.html',{'foo':'bar'}) 

делает словарь контекстным в шаблону 'result.html' и возвращает объект HttpResponse с этим оказанной текстом

result.html ... {foo} ... , где foo будет заменен баром Для получения дополнительной информации см. Здесь django docs

Смежные вопросы