Okay Das ist was ich habe:Python Server-Betreiber nur Dekorateure
Ich spiele um mit authengine von Scotch und kann nicht herausfinden, wie man einen Admin-Dekorateur zu machen. her der Code seiner eher einfach:
class Jinja2Handler(webapp2.RequestHandler):
"""
BaseHandler for all requests all other handlers will
extend this handler
"""
@webapp2.cached_property
def jinja2(self):
return jinja2.get_jinja2(app=self.app)
def get_messages(self, key='_messages'):
try:
return self.request.session.data.pop(key)
except KeyError:
return None
def render_template(self, template_name, template_values={}):
messages = self.get_messages()
if messages:
template_values.update({'messages': messages})
self.response.write(self.jinja2.render_template(
template_name, **template_values))
def render_string(self, template_string, template_values={}):
self.response.write(self.jinja2.environment.from_string(
template_string).render(**template_values))
def json_response(self, json):
self.response.headers.add_header('content-type', 'application/json', charset='utf- 8')
self.response.out.write(json)
def UserArea(fuct):
def Usercheck():
return Usercheck
class PageHandler(Jinja2Handler):
def root(self):
session = self.request.session if self.request.session else None
user = self.request.user if self.request.user else None
profiles = None
emails = None
if user:
profile_keys = [ndb.Key('UserProfile', p) for p in user.auth_ids]
profiles = ndb.get_multi(profile_keys)
emails = models.UserEmail.get_by_user(user.key.id())
self.render_template('home.html', {
'user': user,
'session': session,
'profiles': profiles,
'emails': emails,
})
@UserArea
class UserHandler(Jinja2Handler):
def get(self):
self.render_template('index-2.html', {
})
Skipping das Einrücken Fehler ... Ich kann nicht scheinen, um herauszufinden, ... Ich habe gelesen, dachte, die How to make a chain of function decorators? dachten, dass ich für sie das grundlegende Verständnis hatte .... aber keine
Jede Hilfe mich in der richtigen Art und Weise zeigen ...
der Fehler ich eine Menge zu bekommen Naht ist Typeerror: ‚NoneType‘ Objekt ist nicht aufrufbar
Danke für die schnelle Antwort ... ich suche ziemlich genau was du gepostet hast .... ich glaube, ich hatte Probleme mit meinem Kopf um den Wrapper Teil der Dekorateur ... nach dem Sehen ging das zurück und sah es über und ausgecheckt functools .... (neu zu Python, Bauarbeiten für einen Lebensunterhalt) lol und weiter auf einige der Methoden statt der Klasse zu dekorieren könnte eine gute Idee sein, im Moment nur mit ihm, um Benutzerbereich zur Verfügung zu stellen. Also ist das Dekorieren der Klasse in Ordnung, aber gut für die Zukunft. Danke –
Das Zurückgeben einer Funktion von einem Klassen-Dekorator wird größere Probleme haben als das Benennen - es wird die dekorierte Klasse durch eine Funktion ersetzen! –