Nous avons eu ce code et cela a bien fonctionné. Après avoir fait un refactor, ça ne marche plus. Comme le dit le commentaire, nous voulons seulement hériter d'une page de base si la requête n'est pas une requête ajax. Pour ce faire, nous passons un paramètre au template, et, en fonction du paramètre, nous héritons ou non.Mako Dynamic Template Inheritance
View.py
class Router(object):
def __init__(self, request):
self.request = request
@view_config(route_name="home")
def get(self):
template = "home.mak"
value = {'isPage':self.request.is_xhr is False}
return render_to_response(template, value, request=self.request)
Template.mak
##conditional to determine with the template should inherit from the base page
##it shouldn't inherit from the base page is it is being inserted into the page using ajax
<%!
def inherit(context):
if context.get('isPage') == True:
return "base.mak"
else:
return None
%>
<%inherit file="${inherit(context)}"/>
Actuellement, l'erreur est non définie ne pas attribut __ __ getitem. Si nous changeons $ {inherit (context)} en $ {inherit (value)}, nous obtenons que la valeur globale de la variable est indéfinie.
Pouvez-vous essayer de mettre toute la logique dans le Hériter marque? Juste pour sortir l'appel de la fonction de l'équation: $ {'base.mak' si context.get ('isPage') else None} –
Je ne pense pas que c'était le problème. Nous avons fait un refactor assez important et le code ci-dessus fonctionne à nouveau. Je suppose que le contexte passé n'a pas été initialisé ou qu'il y avait une erreur de syntaxe dans l'un des modèles. – JeffRegan
En outre, l'objet de requête a une propriété appelée is_xhr qui est vraie si la requête est asynchrone. Nous utilisons cette propriété pour déterminer si nous devons charger la page entière ou non. Donc is_page = self.request.is_xhr est faux – JeffRegan