Сообщения Django отображаются дважды - PullRequest
1 голос
/ 23 марта 2011

Я использую инфраструктуру сообщений Django, и у меня есть очень странная проблема, когда мои сообщения отображаются в шаблоне дважды, даже если {{messages | length}} равен 1

Мой взгляд

if request.method == 'POST':
    form = EditProfileForm(user=request.user, meta=meta, data=request.POST, files=request.FILES)
    if form.is_valid():
        user = form.save()
        if 'uploaded_image' in request.FILES:
            #TODO limit image size, check mime type
            filename = request.FILES['uploaded_image']
            destination = open('%s/%s' % (settings.FILE_UPLOAD_PATH, form.filename), 'wb+')
            for chunk in filename.chunks():
                destination.write(chunk)
            destination.close() 

        print 'adding success message' #this is printed once
        messages.success(request, 'Settings saved.') #this message is displayed twice
        #messages.add_message(request, messages.SUCCESS, 'Yup. Saved.')

        return HttpResponseRedirect(reverse('someview'))
    else:
        print form.errors
        messages.error(request, 'Error updating settings. See errors below.')

в моем шаблоне:

{% block message%}
{{message.count}}
{% if messages %}
{{messages|length}}
    {% for message in messages%}
        <p class="{{message.tags}}">{{message}}</p>
    {% endfor %}
{% endif %}
{% endblock %}

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

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

0 голосов
/ 04 августа 2018

Хотя этот ответ относится к другому вопросу, у меня возникла эта проблема, и она помогла мне решить ее.

Подводя итог, можно добавить следующий код в settings.py:

MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...