Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 17, 2014 20:09:10

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Bottle: не работает метод POST

Ишел по туториалу: http://bottlepy.org/docs/dev/tutorial_app.html
Заюзал get и post, как там, но ошибка - 405, method is not allowed. Почему? Как исправить?
Проблема там, где декораторы get и post, get - работает.

import os
 
# setup global and environ variables
app_root = os.path.dirname(os.path.abspath(__name__))
os.environ['FAMILY_BUDGET_ROOT'] = app_root
 
from bottle import route, run, redirect, request, get, post, static_file
from controller import check_login, get_page
 
 
# static section
 
@route('/<filename:re:.*\.css>')
def stylesheets(filename):
    return static_file(filename, root=app_root)
 
# dynamic section
 
@route('<path:path>')
def family_budget(path):
    redirect('/family_budget/login')
 
@get('/family_budget/login')
def login():
    username = request.get_cookie("account", secret='very_secret_key')
    if username:
        redirect('/family_budget/main_page')
    else:
        login_page = get_page('templates/login_page.html')
        return login_page
 
@post('/family_budget/login')
def do_login():
    username = request.forms.get('username')
    password = request.forms.get('password')
    if check_login(username, password):
        request.set_cookie("account", username, secret='very_secret_key')
        redirect('/family_budget/main_page')
    else:
        return "<p>Login failed.</p>"
 
@route('/restricted')
def restricted_area():
    username = request.get_cookie("account", secret='very_secret_key')
    if username:
        return template("Hello {{name}}. Welcome back.", name=username)
    else:
        return "You are not logged in. Access denied."
 
run(host='0.0.0.0', port=5050)



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Отредактировано Master_Sergius (Авг. 17, 2014 20:09:46)

Офлайн

#2 Авг. 17, 2014 21:09:38

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Bottle: не работает метод POST

Master_Sergius
405, method is not allowed
Может возникать когда нет метода, ни post ни get, или есть post но обращение по get.

Master_Sergius
@route('<path:path>')
Примените последним, т.к. он может перехватить все последующие.

Попробуйте методом исключения - отключите все роуты кроме post, и проверьте например с пом. curl.

Офлайн

#3 Авг. 17, 2014 22:57:22

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Bottle: не работает метод POST

Я понял! Я ошибся в задании пути в form action!!!
Всё работает!



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version