gpt4 book ai didi

python - 在两个模块中使用cherrypy,但只有一个cherrypy实例

转载 作者:太空宇宙 更新时间:2023-11-03 19:20:13 24 4
gpt4 key购买 nike

我正在一个项目中使用cherrypy,并在主python脚本main.py中使用它在主应用程序内的方法中,我导入一个名为身份验证的模块

fromauthentication import auth 然后将变量 args 传递给它。显然这里已经使用了cherrypy

@cherrypy.expose
def auth(self, *args):
from authentication import auth
auth = auth()

page = common.header('Log in')

authString = auth.login(*args)

if authString:
page += common.barMsg('Logged in succesfully', 1)
page += authString
else:
page += common.barMsg('Authentication failed', 0)

page += common.footer()

return page

在authentication.py中我想设置 session 变量,所以我再次包含了cherrypy

def login(self, *args):
output = "<b>&quot;args&quot; has %d variables</b><br/>\n" % len(args)

if cherrypy.request.body_params is None:
output += """<form action="/auth/login" method="post" name="login">
<input type="text" maxlength="255" name="username"/>
<input type="password" maxlength="255" name="password"/>
<input type="submit" value="Log In"></input>
</form>"""
output += common.barMsg('Not a member yet? Join me <a href="/auth/join">here</a>', 8)

return output

问题是当我使用它时出现错误HTTPError: (400, '意外的正文参数:用户名, 密码')。我希望 main.py 中的cherrypy 实例可以在authentication.py 中访问,以在此处设置 session 变量。我怎样才能做到这一点?

我还尝试像这样传递cherrypy对象authString = auth.login(cherrypy, *args)并省略将其包含在authentication.py中,但是得到相同的错误

最佳答案

很抱歉这么快回答这个问题,但一些研究表明,从方法 auth 中省略的参数 **kwargs 导致 body_parameters 被 Cherrypy 拒绝,因为它没有预料到它们。要解决此问题:

main.py

@cherrypy.expose
def auth(self, *args, **kwargs):
from authentication import auth
auth = auth()

page = common.header('Log in')

authString = auth.login(cherrypy, args)

if authString:
page += common.barMsg('Logged in succesfully', 1)
page += authString
else:
page += common.barMsg('Authentication failed', 0)

page += common.footer()

return page

authentication.py

def login(self, cherrypy, args):
output = "<b>&quot;args&quot; has %d variables</b><br/>\n" % len(args)

if cherrypy.request.body_params is None:
output += """<form action="/auth/login" method="post" name="login">
<input type="text" maxlength="255" name="username"/>
<input type="password" maxlength="255" name="password"/>
<input type="submit" value="Log In"></input>
</form>"""
output += common.barMsg('Not a member yet? Join me <a href="/auth/join">here</a>', 8)

return output

关于python - 在两个模块中使用cherrypy,但只有一个cherrypy实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com