创建logout_url很奇怪

时间:2012-05-20 20:50:06

标签: python google-app-engine

我正在尝试使用create_logout_url在一个简单的appengine网站中创建一种管理菜单,但它目前表现得非常糟糕。看看下面的代码:

menu = []

logout_link = "<a href='%s'>Log out</a>" % users.create_logout_url('/blog')
menu.append(logout_link)

new_entry = ''
if users.is_current_user_admin():
new_entry = "<a href='%(newpost)s'>New entry</a>" % {'newpost': self.uri_for('blog_entry')}
menu.append(new_entry)
return ','.join(menu)

预期输出应该是这样的:

<a href='/_ah/login?continue=http%3A//localhost%3A8080/blog&action=Logout'>Log out</a>,<a href='/blog/newpost'>New entry</a>

但实际上是:

<a href="<a href='/_ah/login?continue=http%3A//localhost%3A8080/blog&action=Logout'>Log out</a>,<a href='/blog/newpost'>New entry</a>">Log out</a>

有什么想法吗?

更新

我正在尝试在我的基本处理程序中使用上面的代码(其中包含大量可在任何地方重用的代码,如此管理菜单和模板函数),如果它有帮助或重要。

logout_link - 部分更改为:

logout_link = users.create_logout_url('/blog')

结果如下:

<a href="/_ah/login?continue=http%3A//localhost%3A8080/blog&action=Logout,<a href='/blog/newpost'>New entry</a>">Log out</a>

(之前我已经尝试过,但无济于事)

1 个答案:

答案 0 :(得分:0)

Monotux,您能否向我们提供有关您的代码的更多详细信息。你说你正在使用其他一些菜单和模板功能。

提供的代码段会生成正确的代码:

<a href='/_ah/login?continue=http%3A//localhost%3A8080/blog&action=Logout'>Log out</a>,<a href='/blog/newpost'>New entry</a>

鉴于你看到的两个输出:

<a href="<a href='/_ah/login?continue=http%3A//localhost%3A8080/blog&action=Logout'>Log out</a>,<a href='/blog/newpost'>New entry</a>">Log out</a>
<a href="/_ah/login?continue=http%3A//localhost%3A8080/blog&action=Logout,<a href='/blog/newpost'>New entry</a>">Log out</a>

两者都是

形式
<a href='...'>Log out</a>

我认为您正在将代码段的响应嵌入到其他代码中。