我在用Bottle写一个小应用,遇到一些概念问题,请帮助我解决。

0 投票
3 回答
1681 浏览
提问于 2025-04-16 07:40
from bottle import  route, run, debug, error, request, template

@route('/home')
@route('/home/')
def login():
    return template('templates/login')

@route('/home', method='POST')
@route('/home/', method='POST')
def welocme():
    data = request.POST
    if data:
        password = data.get('password')
        check_pass = 'password'
        if password == check_pass:
            return template('templates/welcome')
        else:
            return template('templates/login')
    else:
        return template('templates/login')

我的需求是:我希望在同一个网址上有一个登录页面和一个欢迎页面。登录页面只有一个密码输入框。

我的问题是:如果我登录后刷新页面,它又把我带回登录页面。但理想情况下,我应该一直停留在欢迎页面上。

@error(404)
def error404(error):
    return 'http://google.com'

我的第二个问题是:我想在出现404错误时,重定向到一个特定的网址。

3 个回答

0

如果我理解这个问题没错的话,想要显示欢迎页面,唯一的方法就是通过POST请求。

你可以把这个改成这样:当有人用GET请求时,先检查一下他们是否已经登录。如果没有登录,就把他们引导到登录页面。

1

你的第二个问题可以在 这里 找到答案。

你可能还想看看 Beaker 的 cookie 会话,可以用它来在不同请求之间保持你应用的状态。

1

如果用户访问“/home”页面,你不想先检查一下他们是否已经登录再显示登录界面吗?看起来你是认为如果HTTP请求方法不是POST,就说明他们还没有登录。

我对你的框架了解不多,但我猜如果登录成功的话,你应该设置一个cookie,然后在处理HTTP GET请求时检查这个cookie,看看用户是否已经认证。

撰写回答