2010-10-30 4 views
0

Je n'arrive pas à faire fonctionner le lien de déconnexion dans GAE (Python).URL de déconnexion de Google App Engine

Ceci est le page Je regarde.

Dans mon modèle, je crée un lien

<p><a href="\users.create_logout_url("/")\">Logout</a></p> 

Mais quand je clique dessus je reçois un message « lien cassé » de Chrome. L'URL du lien ressemble à ceci:

http://localhost:8085/users.create_logout_url(

Mes questions:

Quelqu'un peut-il expliquer comment cela fonctionne en général?

Quelle est l'URL correcte pour le serveur de dev?

Quelle est l'URL correcte pour le serveur d'applications?

Quelle est la ("/") dans l'URL de déconnexion?

Merci.

EDIT

Ce lien fonctionne; mais je ne sais pas pourquoi:

<p><a href="http://localhost:8085/_ah/login?continue=http%3A//localhost%3A8085/&action=Logout">Logout</a></p> 

Répondre

2

Quel type de modèles utilisez-vous? Il est clair à la sortie que vous n'échappez pas correctement à votre code.

+0

Salut, J'utilise Mako http://www.makotemplates.org/docs/syntax.html#syntax~~V~~3rd – Zeynel

+0

Ensuite, vous devez faire $ {users.create_logout_url ("/")} pour substituer dans le résultat de cette expression. –

2

me semble que vous voulez faire à la place:

self.response.out.write("This is the url: %s", users.create_logout_url("/")) 

Vous pouvez passer aussi à votre modèle, en utilisant GAEs mis en œuvre des modèles de django.

from google.appengine.ext.webapp import template 
... 
... 
(inside your request handler) 
    class Empty: pass 
    data = Empty() 
    data.logout = users.create_logout_url("/") 
    self.response.out.write(template.render(my_tmpl, {'data': data}) 

Une approche utile est d'ajouter toutes sortes d'informations à un BaseRequestHandler puis utiliser comme classe de base pour toutes vos autres classes de gestionnaire de requêtes. Vos nouvelles classes auront alors accès à toutes les données que vous avez fournies dans la classe de base.

class OtherHandler(BaseRequestHandler): 
    def get(self): 
    self.response.out.write("This is foo: %s" % self.data.foo) # passes str "bar" 

Espérons que ça aide.

A.