2015-09-16 62 views
0

我有一個HTML頁面,其中用戶插入數據,然後單擊確定按鈕。 當按鈕單擊一個python函數檢查是否一切正常,並在這種情況下更新我的數據庫。錯誤味精給用戶在Django

在的情況下,一個當檢查是假的我想一個味精彈出到用戶,使他知道操作zhcon失敗。

我所做的是:

if a<b: 
    return render(request, 'main/error.html') 

和我的error.html的puted錯誤的詳細信息。

然而,這是extrimly inconvinet作爲頁面正在發生變化的error.html來。 我想給這個錯誤消息作爲Messege框或類似的東西...所以它保持在同一頁面上。

的事情是,從views.py我無法訪問HTML頁面,並要求它彈出一個味精。

我怎麼能彈出一個味精時的條件是假的?

回答

1

可以使用messaging framework爲了您的網頁上顯示一條消息:

很常用的Web應用程序,你需要顯示一個一次性通知消息(也被稱爲「閃信」)在處理表單或一些其他類型的用戶輸入之後給用戶。

爲此,Django提供了cookie-和基於會話的消息完全支持,匿名和身份驗證的用戶。消息框架允許您臨時將消息存儲在一個請求中,並檢索它們以便在隨後的請求(通常是下一個請求)中顯示。每條消息都標有確定其優先級的特定級別(例如,信息,警告錯誤)。

有大量文檔和實施例中提供的鏈接。

編輯:實施例的設置

摘要(settings.py):

INSTALLED_APPS = (
    ... 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    ... 
) 

MIDDLEWARE_CLASSES = (
    ... 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    ... 
    'django.contrib.messages.middleware.MessageMiddleware', 
    ... 
) 

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [ 
      os.path.join(BASE_DIR, 'templates'), 
     ], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       ... 
       'django.contrib.messages.context_processors.messages', 
      ], 
      'debug': True, 
     }, 
    }, 
] 

在視圖中:

from django.contrib import messages 

if a < b: 
    messages.warning("a is less than b.") 

在模板(例如,使用bootstrap3):

{% if messages %} 
    <div class="messages"> 
     {% for message in messages %} 
      <div class="alert alert-{{ message.tags }} alert-dismissible" role="alert"> 
       <button type="button" class="close" data-dismiss="alert" aria-label="Close"> 
        <span aria-hidden="true">&times;</span> 
       </button> 
       {{ message }} 
      </div> 
     {% endfor %} 
    </div> 
{% endif %} 
+0

它不起作用。你能在真實程序中展示這個例子嗎?他們說增加這個,補充說,但最後它不起作用。我不明白它是如何解決我的問題的......他們告訴要添加「如果messege」給我的模板...但是模板在開始時加載......在開始時不會有任何消息....它似乎沒有解決我的問題。 – aayushdagra

+1

@aayushdagra:你有什麼試過?如果你說「它不工作」,你有什麼錯誤?對我來說,這聽起來像是解決您的問題的完美方案。你也可以只是谷歌「Django消息框架」它會給你噸的例子。 –

+0

@aayushdagra我會同意Shang Wang,你有什麼嘗試?如果你閱讀文檔,它非常簡單。儘管如此,我還是爲了您的方便而添加了一個示例,我希望它有所幫助 – Wtower

相關問題