我在用Bottle写一个小应用,遇到一些概念问题,请帮助我解决。
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,看看用户是否已经认证。