что-то не так с django сообщениями - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть функция просмотра, подобная этой:

@login_required
def delete_deal(request, id_deal):
    id_deal = int(id_deal)
    user = get_object_or_404(User, id=request.user.id)
    user_deals = Deal.objects.filter(user=user)
    if not user_deals.exists():
        messages.add_message(request, messages.INFO,
                                        'You have no deal.')

        return redirect('index')

    return render(request, 'booking/confirmation_delete.html', {'title': title})

Если я проверяю пользователя, у которого нет сделки, сообщение не отображается в первый раз, но если я повторяю сообщение отображается 2 раза , что не так?

У меня есть другая функция просмотра, которая возвращает сообщение и отображает его нормально !!

Если вам нужна дополнительная информация, сообщите мне

Обновить :

Вот мой url.py приложения, в котором расположена функция просмотра выше:

urlpatterns = [
    url(r'^create_deal/$', views.create_deal, name='create_deal'),
    url(r'^delete_deal/(?P<id_deal>[0-9]+)/$', views.delete_deal, name='delete_deal'),
]

Функция view.py:

def index(request):
    all_deals = Deal.objects.all()

    return render(request, 'base.html', locals())

template. html:

{% if messages %}
  {% for message in messages %}
      <div>{{ message }}</div>
  {% endfor %}
{% endif %}

Ответы [ 2 ]

0 голосов
/ 21 февраля 2020

У меня была эта проблема, потому что для отображения сообщения, которое я пытался ввести в строке поиска, URL-адрес сделки, которая не существует, и, глядя в консоль, я увидел, что при передаче URL-адреса в строке поиска представление выполняется раньше. даже нажав enter

Мой URL был примерно таким:

http://127.0.0.1:8000/booking/delete_deal/65/

, а число 65 является id_deal, которого не существует

Я пытался добавить ссылку который перенаправляет на функцию просмотра с id_deal, который не существует, и сообщение всегда отображается

0 голосов
/ 20 февраля 2020

Похоже, что оно добавляет сообщение оба раза и будет перенаправлять на 'index' оба раза ... Так что, возможно, проблема либо в URL-адресах и представлении для 'index', либо как-то в отображаемом шаблоне. Покажите нам urls.py, связанную функцию представления / объект и шаблон.

...