在MySQL中應用LIMIT停止分頁的辦法。本站提示廣大學習愛好者:(在MySQL中應用LIMIT停止分頁的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是在MySQL中應用LIMIT停止分頁的辦法正文
起首來剖析下需求,web法式後台須要認證,後台頁面包括多個頁面,最通俗的辦法就是為每一個url添加認證,然則如許就須要每一個每一個綁定url的後台函數都須要添加相似或許雷同的代碼,然則如許做代碼就過度冗余,並且晦氣於擴大.
接上去我們先不談及裝潢器,我們都曉得Python是個很壯大的說話,她可以將函數當作參數傳遞給函數,最簡略的:
def p(): print 'Hello,world' def funcfactor(func): print 'calling function named', func.__name__ func() print 'end' funcfactor(p) # 輸入為: # calling function named p # Hello,world # end
了如指掌的法式,界說一個函數p(),將函數p當作參數傳遞給喊出funcfactor,在履行p函數前後加上一些舉措.
我們還可以這麼做:
def p(): print 'Hello,world' def funcfactor(func): print 'calling function named', func.__name__ return func func = funcfactor(p) func() # 輸入為: # calling function named p Hello,world
正如你看到的,我們可以將函數前往然後付與一個變量,留待稍後挪用.然則這類情形下我們要想在函數履行後做點甚麼就弗成能,然則我們的Python是壯大的,Python可以在函數中再嵌套一個函數,我們可以像上面這麼做:
def p():
print 'Hello, world'
def funcfactor(func):
def wrapper():
print 'do something at start'
func()
print 'do something at end'
return wrapper
func = funcfactor(p)
func()
#輸入為:
# do something at start
# Hello, world
# do something at end
上面我們來看看裝潢器,下面的代碼固然完成的一個很艱苦的義務,然則還不敷優雅,並且代碼不相符Python的哲學思惟,所以裝潢器就回聲而出,裝潢器沒有和下面的道理雷同,異樣用於包裝函數,只是代碼完成上加倍優雅和便於浏覽.裝潢器以@開首前面跟上裝潢器的稱號,緊接著下一行就是要包裝的函數體,下面的例子用裝潢器可用以下方法完成:
def decorator(func):
def wrapper():
print 'do something at start'
func()
print 'do something at end'
return wrapper
@decorator
def p():
print 'Hello, world'
p()
#輸入為:
# do something at start
# Hello, world
# do something at end
現實上裝潢器並沒有機能方面或其他方面的晉升,僅僅是一種語法糖,就是下面一個例子的改寫,如許加倍優雅和便與浏覽. 假如我們的p()函數不想僅僅只輸Hello,world,我們想向某些我們指定的人打召喚:
def decorator(func):
def wrapper(*args, **kargs):
print 'do something at start'
func(**kargs)
print 'do something at end'
return wrapper
@decorator
def p(name):
print 'Hello', name
p(name="Jim")
#輸入為:
# do something at start
# Hello Jim
# do something at end
裝潢器在裝潢不須要參數的裝潢器嵌套函數不是必需得,假如被裝潢的函數須要參數,必需嵌套一個函數來處置參數. 寫到這裡想必年夜家也曉得裝潢器的用法和感化.如今回到正題,若何優雅的給後台url加上驗證功效?毫無疑問我們應用裝潢器來處置:
def blog_auth(func):
'''
界說一個裝潢器用於裝潢須要驗證的頁面
裝潢器必需放在route裝潢器上面
'''
# 界說包裝函數
def wrapper(*args, **kargs):
try:
# 讀取cookie
user = request.COOKIES['user']
shell = request.COOKIES['shell']
except:
# 湧現異常則重定向到登錄頁面
redirect('/login')
# 驗證用戶數據
if checkShell(user, shell):
# 校驗勝利則前往函數
return func(**kargs)
else:
# 不然則重定向到登錄頁面
redirect('/login')
return wrapper
可以再須要驗證的處所添加blog_auth裝潢器:
@route('/admin:#/?#')
@blog_auth
def admin():
'''
用於顯示後台治理首頁
'''
TEMPLATE['title'] = '儀表盤 | ' + TEMPLATE['BLOG_NAME']
TEMPLATE['user'] = request.COOKIES['user']
articles = []
for article in db.posts.find().sort("date",DESCENDING).limit(10):
articles.append(article)
# 將文章列表交給前台模版
TEMPLATE['articles'] = articles
return template('admin.html',TEMPLATE)
至此bottle驗證的成績就很優雅的用裝潢器處理了.