2014-05-21 115 views
1

我認爲我的設置有問題,當我在登錄動作中使用flash時,我無法在索引模板中看到它,但是當我在「我的」動作中使用flash時,我看到重複的消息Django my flash messages does not work

settings.py

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'debug_toolbar', 
    'bookmarks', 
) 

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
) 

觀點:

def login(request): 
... 
    if user is not None and user.is_active: 
     auth.login(request, user) 
     messages.add_message(request, messages.SUCCESS, 'cant see it') 

     return redirect(reverse('bookmarks:index')) 
... 


def my(request): 
... 
    messages.add_message(request, messages.SUCCESS, 'this is twice') 

    return render(request, 'bookmarks/my.html', { 
     'bookmarks': bookmarks 
    }) 

和我的index.html

{% if messages %} 
<ul class="messages"> 
    {% for message in messages %} 
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li> 
    {% endfor %} 
</ul> 
{% endif %} 

// 編輯 可能是路由的東西嗎?

urlpatterns = patterns('', 
    url(r'^$', views.index, name = 'index'), 
... 
    url(r'^my/$', views.my, name = 'my'), 
... 
) 

回答

0

這些flash消息只有在渲染頁面時纔會顯示。

這就是爲什麼你看到兩條消息:

  1. 您成功登錄,並設置一個消息
  2. 您重定向到您的索引視圖,消息框架記住消息
  3. 你的索引視圖呈現頁面和顯示兩條消息
+0

不,我只是登錄,接下來我去索引頁,我沒有看到Flash消息。我的secound行爲是:我去「我的」行動,然後我去索引頁,我看到標籤「這是兩次」重複 –