【发布时间】:2016-11-16 18:27:59
【问题描述】:
我正在使用 web.py 处理具有用户身份验证组件的项目。这个项目有一个/demo 目录和一个/register 目录。
问题在于,由于某种原因,单击本应前往/register 目录的按钮会转到/demo。有趣的是,如果我在 URL 的末尾键入 /register,/register 会正确显示。在这种情况下,URL 是不同的,缺少来自单击按钮的 ?register=Register 部分。
点击注册按钮时出现的具体错误是这样的:
type 'exceptions.TypeError'> at /demo
__template__() takes exactly 1 argument (0 given)
它指向问题区域的代码是这样的:
class demo:
def GET(self):
render = create_render(session.get('privilege', 0))
return '%s' % render.demo() # Specifically this line generates the error.
我不认为有任何奇怪的失败,因为在代码中,register 类和 demo 类之间实现了两个类。它们实际上是按照它们在 urls 列表中显示的顺序来实现的,reset 和 profile 介于两者之间。
我认为我的urls 列表没有任何问题:
urls = (
'/', 'index',
'/register', 'register',
'/reset', 'reset',
'/profile', 'profile',
'/demo', 'demo',
'/entropy', 'entropy',
)
这里也是按钮的 HTML 代码:
<form action="demo" method="GET">
<input type="submit" name="demo" value="Demo"/>
<form/>
<form action="register" method="GET">
<input type="submit" name="register" value="Register"/>
</form>
其他可能相关的代码:
register.GET():
class register:
def GET(self):
reg_form = forms.registration_form()
render = create_render(session.get('privilege'))
return render.register()
create_privilege(privilege):(解释为here,在#4)
def create_render(privilege):
if logged():
render = web.template.render('templates/logged', base='base')
else:
render = web.template.render('templates/', base="base")
return render
所以,我想,最后一个问题是:为什么按钮会呈现错误的页面?如果需要,我可以发布更多代码!
谢谢!
【问题讨论】:
-
你在
action="/demo"和action="/register"中尝试过/吗? -
好的,所以当我将
action="/demo"替换为action="/"时,它可以正常工作并指向/目录。当我用action="/"替换另一个时,它仍然会尝试转到 URL/demo?register=Register,而不是 `/register?register=Register -
我的意思不是
action="/",而是action="/register"-register和/。现在你有action="register"-register没有/。action="/demo"也一样 :) -
哈哈,我现在明白了。不幸的是,这样做并没有改变任何事情,但是您认为我们可以从我被误解的尝试中得到什么吗?
-
我想我明白了。不知何故,按钮
demo和register的顺序很重要,交换它们可以让两个页面正确重定向。很奇怪。