Я пишу небольшое приложение в бутылке.У меня есть некоторая концептуальная проблема, помогите мне решить ее - PullRequest
0 голосов
/ 27 ноября 2010
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')

Мое требование: я получу страницу входа и приветствия по тому же URL.Страница входа имеет только одно поле пароля.

Моя проблема: Если я получу логин и снова зайду на страницу приветствия при обновлении, она отправит меня на страницу входа.Но в идеале это должно быть только на странице приветствия.

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

Моя вторая проблема: я хочу перенаправить на определенный URL на 404.

Ответы [ 3 ]

1 голос
/ 16 января 2011

Ответ на ваш второй вопрос здесь .

Возможно, вы также захотите взглянуть на сеансы cookie Beaker и использовать его для сохранения состояния вашего приложения между запросами.

1 голос
/ 27 ноября 2010

Если пользователь переходит на страницу "/ home", не хотите ли вы проверить, вошли ли они в систему, прежде чем показывать им экран входа в систему? Похоже, вы предполагаете, что они еще не вошли в систему, если HTTP-метод не POST.

Я не знаю много о вашей платформе, но я предполагаю, что если вход в систему успешен, вы должны установить cookie, а затем вы должны проверить cookie для HTTP GET, чтобы увидеть, аутентифицирован ли пользователь.

0 голосов
/ 27 ноября 2010

Если я правильно понимаю вопрос, единственный способ получить шаблон приветствия - это через POST.

Вы можете изменить это так, чтобы запросы GET проверяли, вошел ли кто-то в систему. Если это не удается, перенаправьте его на страницу входа.

...