對於CherryPy使用Genshi模板引擎,我需要一個上下文相關的站點導航,它爲登錄用戶顯示不同的菜單。Genshi和CherryPy中的上下文相關導航
用戶由CherryPy會話標識。
什麼是爲登錄用戶顯示不同菜單的最佳方式?
對於CherryPy使用Genshi模板引擎,我需要一個上下文相關的站點導航,它爲登錄用戶顯示不同的菜單。Genshi和CherryPy中的上下文相關導航
用戶由CherryPy會話標識。
什麼是爲登錄用戶顯示不同菜單的最佳方式?
我們檢查,如果用戶登錄...
import cherrypy
from genshi.template import TemplateLoader
@cherrypy.expose
def index(self):
tmpl = loader.load('index.html')
if(cherrypy.session.get('_cp_Email')):
return tmpl.generate(title='Geddit').render('html', LoggedIn=True)
else:
return tmpl.generate(title='Geddit').render('html', LoggedIn=False)
模板想這樣的事情...
if (LoggedIn) {
# Logged In menu
} else {
# not Logged In menu
}
如果他們是我們發送一個變量到模板來顯示註銷而不是登錄。
我們使用這種身份驗證...
http://tools.cherrypy.org/wiki/AuthenticationAndAccessRestrictions
包括出於安全原因的評論。 希望這有助於!
謝謝安德魯,我使用與你相同的身份驗證方法。我一直在想有一種原生Genshi的方式,但基本上我會爲登錄用戶提供一個完全不同的菜單系統。在此基礎上,我想我可以將模板的菜單類型作爲字符串發送,然後讓Genshi檢查menu_type。因此CherryPy將管理決策邏輯,同時將Genshi作爲展示引擎。你同意嗎? –
我更新了我的答案,向您展示瞭如何在同一模板中完成此任務。但是你想通過include發送任一菜單模板來保持它的模塊化... http://genshi.readthedocs.org/en/latest/api/template/#genshi.template.base.Template.INCLUDE –
本文可能幫助更好地解釋它... http://renesd.blogspot.com/2010/02/genshi-templates-headerfooter-templates.html此外這個線程是有幫助的... https://groups.google.com/forum/ #!話題/元史/ ja7eM3y36dE –
用戶如何登錄? –
登錄是通過用戶/密碼執行的,該用戶/密碼對數據庫進行身份驗證並設置包含身份驗證密鑰的會話。它使用這個:http://tools.cherrypy.org/wiki/AuthenticationAndAccessRestrictions –