Как передать информацию с помощью перенаправления HTTP (в Django)

попробуйте использовать keyvalue pipe:

Map looping template side (keyvalue pipe) :

  • {{recipient.key}} --> {{item.key}}
    • {{element.id}}

DEMO .

20
задан Peter Mortensen 12 April 2014 в 08:17
поделиться

7 ответов

Это - встроенная функция Django, названный "сообщениями"

См. http://docs.djangoproject.com/en/dev/topics/auth/#messages

Из документации:

сообщение А связано с Пользователем. Нет никакого понятия истечения или меток времени.

сообщения используются администратором Django после успешных действий. Например, "Опрос Foo был создан успешно". сообщение.

12
ответ дан 30 November 2019 в 00:19
поделиться

Можно ли просто передать сообщение как параметрический усилитель запроса oon URL, к которому Вы перенаправляете? Это не ужасно RESTy, но это должно работать:

return HttpResponseRedirect('/polls/%s/results/?message=Updated" % p.id)

и имеют ту проверку представления на параметрический усилитель сообщения, вычищают его для nasties и отображают его наверху.

1
ответ дан 30 November 2019 в 00:19
поделиться

Можно использовать django-flashcookie приложение http://bitbucket.org/offline/django-flashcookie/wiki/Home

, оно может отправить несколько сообщений и иметь неограниченные типы сообщений. Позволяет говорят, что Вы хотите один тип сообщения для предупреждения и один для сообщений об ошибках, можно записать

def simple_action(request):
    ...
    request.flash['notice'] = 'Hello World'
    return HttpResponseRedirect("/")

или

def simple_action(request):
    ...
    request.flash['error'] = 'something wrong'
    return HttpResponseRedirect("/")

или

def simple_action(request):
    ...
    request.flash['notice'] = 'Hello World'
    request.flash['error'] = 'something wrong'
    return HttpResponseRedirect("/")

или даже

def simple_action(request):
    ...
    request.flash['notice'] = 'Hello World'
    request.flash['notice'] = 'Hello World 2'
    request.flash['error'] = 'something wrong'
    request.flash['error'] = 'something wrong 2'
    return HttpResponseRedirect("/")

и затем в Вас, шаблон показывает его с [1 112]

{% for message in flash.notice %}
    {{ message }}
{% endfor }}

или

{% for message in flash.notice %}
    {{ message }}
{% endfor }}
{% for message in flash.error %}
    {{ message }}
{% endfor }}
8
ответ дан 30 November 2019 в 00:19
поделиться

В то время как все предложения до сих пор работают, я предложил бы идти с Ry4an (передайте его в URL запроса) - просто изменяют фактический текст на кодированный текст в предопределенном наборе текстовых сообщений.

Два преимущества здесь:

  1. Меньше шанса чего-то взламывающего посредством Вашего вычищения плохого содержания
  2. можно локализовать сообщения позже в случае необходимости.

другие связанные с cookie методы.. хорошо, они не работают, если браузер не поддерживает cookie и является немного более дорогим.. Но незначительно. Они - действительно инструмент для очистки к глазу.

0
ответ дан 30 November 2019 в 00:19
поделиться

Взгляните на структуру сообщений Django. http://docs.djangoproject.com/en/dev/ref/contrib/messages/#ref-contrib-messages

0
ответ дан 30 November 2019 в 00:19
поделиться

Есть много решений

1 Используйте Django -trunk version - поддерживает отправку сообщений анонимным пользователям

2 сеанса

def view1(request):
    request.session['message'] = 'Hello view2!'
    return HttpResponseRedirect('/view2/')


def view2(request):
    return HttpResponse(request.session['message'])

3 перенаправление с параметром

return HttpResponseRedirect('/view2/?message=Hello+view2')

4 cookie

3
ответ дан 30 November 2019 в 00:19
поделиться

Вы также можете указать URL-адрес перенаправления как путь к уже параметризованному представлению.

urls.py:

(r'^some/path/(?P<field_name>\w+)/$', direct_to_template,
    {'template': 'field_updated_message.html',
    },
    'url-name'
),

views.py:

HttpResponseRedirect( reverse('url-name', args=(myfieldname,)) )

Обратите внимание, что args = должен принимать кортеж.

0
ответ дан 30 November 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: