32

ごくまれに、DjangoHTMLメッセージが応答でレンダリングされます。次に、ユーザーGETが別のページに移動すると、Django メッセージが再びレンダリングされます。その後、ユーザーがGET別のページに移動すると、同じメッセージが再度表示されることがあります。

これはめったに発生しませんが、発生した場合、ほとんどのユーザーは同じ動作をしばらく見ます。(これはグループ クロス ブラウザー テストで 1 回発生し、部屋にいた全員がそれぞれのコンピューターで同じ動作を約 5 分間見た後、立ち去りました。)

この動作は、さまざまなビューで発生しています。さらに、各ビューは同じ方法でそれらを追加します (以下を参照)。

デプロイされた環境 (実行中wsgi.py) またはローカル環境でプロジェクトを実行中(実行中) のいずれかで、エラーを確実に再現できませんでしたmanage.py。(この問題をローカルで見たことがないことに注意してください。)

なぜこれが起こっているのか誰にも分かりますか?

追加された成功メッセージの例。

       messages.success(
            request,
            "Changes to {form} {request} were successfully saved."\
            .format(form=self.form.display_name,
                    request=serv_request_id_as_url(self.serv_request))
        )

これは、メッセージをレンダリングするテンプレート コードです。

<div id="messages">
  {% for message in messages %}
    <div class="alert alert-{{ message.tags }}">
      <a class="close" data-dismiss="alert" href="#" title="Close"><span class="accessibility">Close this message.</span>&times;</a>
      <strong>{{ message.message|safe }}</strong>
    </div>
  {% endfor %}
</div>

関連する設定:

MIDDLEWARE_CLASSES = (
    'django.middleware.gzip.GZipMiddleware',
    'django.middleware.common.CommonMiddleware',
    'outage.middleware.OutageMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'utdirect.middleware.HttpHeaderMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware', ... )

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

DATABASES = {'default': {'ENGINE': 'django.db.backends.oracle',
                         ...}}   
4

1 に答える 1