CherryPy - Araç Kutusu

CherryPy'de yerleşik araçlar, CherryPy kitaplığını aramak için tek bir arayüz sunar. CherryPy'de tanımlanan araçlar aşağıdaki şekillerde uygulanabilir -

  • Yapılandırma ayarlarından
  • Bir Python dekoratörü olarak veya bir sayfa işleyicisinin özel _cp_config özniteliği aracılığıyla
  • Herhangi bir işlevin içinden uygulanabilen bir Python çağrılabilir olarak

Temel Kimlik Doğrulama Aracı

Bu aracın amacı, uygulamada tasarlanan uygulamaya temel kimlik doğrulaması sağlamaktır.

Argümanlar

Bu araç aşağıdaki bağımsız değişkenleri kullanır -

İsim Varsayılan Açıklama
Diyar Yok Bölge değerini tanımlayan dize.
kullanıcılar Yok Form sözlüğü - kullanıcı adı: şifre veya böyle bir sözlüğü döndüren Python çağrılabilir bir işlev.
şifrelemek Yok Python çağrılabilir, istemci tarafından döndürülen parolayı şifrelemek ve kullanıcı sözlüğünde sağlanan şifreli parola ile karşılaştırmak için kullanılır.

Misal

Nasıl çalıştığını anlamak için bir örnek alalım -

import sha
import cherrypy

class Root:
@cherrypy.expose
def index(self):

return """
<html>
   <head></head>
   <body>
      <a href = "admin">Admin </a>
   </body>
</html>
""" 

class Admin:

@cherrypy.expose
def index(self):
return "This is a private area"

if __name__ == '__main__':
def get_users():
# 'test': 'test'
return {'test': 'b110ba61c4c0873d3101e10871082fbbfd3'}
def encrypt_pwd(token):

return sha.new(token).hexdigest()
   conf = {'/admin': {'tools.basic_auth.on': True,
      tools.basic_auth.realm': 'Website name',
      'tools.basic_auth.users': get_users,
      'tools.basic_auth.encrypt': encrypt_pwd}}
   root = Root()
root.admin = Admin()
cherrypy.quickstart(root, '/', config=conf)

get_usersişlevi sabit kodlanmış bir sözlük döndürür, ancak değerleri bir veritabanından veya başka bir yerden de alır. Sınıf yöneticisi, CherryPy'nin yerleşik bir kimlik doğrulama aracını kullanan bu işlevi içerir. Kimlik doğrulama, parolayı ve kullanıcı kimliğini şifreler.

Parola bir saldırgan tarafından kodlanıp kodu çözülebileceğinden, temel kimlik doğrulama aracı gerçekten güvenli değildir.

Önbelleğe Alma Aracı

Bu aracın amacı, CherryPy tarafından oluşturulan içeriğin önbelleğe alınmasını sağlamaktır.

Argümanlar

Bu araç aşağıdaki bağımsız değişkenleri kullanır -

İsim Varsayılan Açıklama
geçersiz_yöntemler ("YAYIN", "PUT", "SİL") HTTP yöntemlerinin dizeleri önbelleğe alınmayacak. Bu yöntemler ayrıca, kaynağın önbelleğe alınmış herhangi bir kopyasını geçersiz kılar (siler).
cache_Class MemoryCache Önbelleğe almak için kullanılacak sınıf nesnesi

Kod Çözme Aracı

Bu aracın amacı, gelen istek parametrelerinin kodunu çözmektir.

Argümanlar

Bu araç aşağıdaki bağımsız değişkenleri kullanır -

İsim Varsayılan Açıklama
kodlama Yok İçerik türü başlığını arar
Default_encoding "UTF-8" Hiçbiri sağlanmadığında veya bulunmadığında kullanılacak varsayılan kodlama.

Misal

Nasıl çalıştığını anlamak için bir örnek alalım -

import cherrypy
from cherrypy import tools

class Root:
@cherrypy.expose
def index(self):

return """ 
<html>
   <head></head>
   <body>
      <form action = "hello.html" method = "post">
         <input type = "text" name = "name" value = "" />
         <input type = ”submit” name = "submit"/>
      </form>
   </body>
</html>
"""

@cherrypy.expose
@tools.decode(encoding='ISO-88510-1')
def hello(self, name):
return "Hello %s" % (name, )
if __name__ == '__main__':
cherrypy.quickstart(Root(), '/')

Yukarıdaki kod, kullanıcıdan bir dize alır ve kullanıcıyı, belirtilen adla "Merhaba" olarak görüntüleneceği "merhaba.html" sayfasına yönlendirir.

Yukarıdaki kodun çıktısı aşağıdaki gibidir -

hello.html