Можно ли передать переменную контекста шаблона в качестве параметра в вызове redirect () - PullRequest
0 голосов
/ 27 января 2020

Я строю доску объявлений. Этот проект имеет вид post_job. После успешной публикации задания пользователь перенаправляется в представление dashboard (страница, на которой показан список всех его сообщений).

def post_job(request):
   # ... 
   return redirect('dashboard')

Есть ли способ передать дополнительную переменную контекста на панель инструментов. html шаблон. Т.е.:

return redirect('dashboard', {'success': True})

, чтобы я мог потом сказать на приборной панели. html файл:

{% if success %}
  Your job has been posted successfully.
{% endif %}

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Перенаправление возвращает ответ HTTP 302 , который просто сообщает браузеру, где go дальше. То, что вы могли бы сделать, это сохранить данные, которые вам нужны в вашем сеансе, и получить к ним доступ в виде панели инструментов, например:

def post_job(request):
    ...
    request.session['success'] = True
    return redirect('dashboard')

def dashboard(request):
    success = request.session.pop('success', False)
    return render(request, 'dashboard.html', context={'success': success})
0 голосов
/ 27 января 2020

Редирект не может принимать контекстные переменные - «нормальным» будет пометить jon как «новый» при публикации. В представлении «Панель инструментов» по-разному работайте с новыми заданиями - например, если есть какие-либо новые задания, которые вы можете организовать для отображения сообщения об успехе, - а также обновите задание с «нового» на «открытое».

Хорошо, что это то, что я бы сделал.

...