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