Вот, главный файл:
import os
from bottle import route, run, redirect, post, static_file
from controller import check_login, get_page
app_root = os.path.dirname(os.path.abspath(__name__))
# 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')
@route('/family_budget/login')
def login():
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):
response.set_cookie("account", username, secret='some-secret-key')
return template("<p>Welcome {{name}}! You are now logged in.</p>", name=username)
else:
return "<p>Login failed.</p>"
run(host='0.0.0.0', port=5050)
Ещё не всё реализовано, конечно, ведь проверяю всё пошагово и вот уже столкнулся с проблемой.
Файл controller.py:
from md5 import md5
from string import Template
def get_stored_password(username):
pass
def check_login(username, password):
pass_md5 = md5(password).hexdigest()
if get_stored_password(username) == pass_md5:
return True
else:
return False
def get_page(path_to_template, subs_dict={}):
template = open(path_to_template).read()
return Template(template).substitute(subs_dict)
На данном этапе должна лишь появится форма для ввода лоигна/пароля. Вторая функция - do_login - конечно, работать не будет (скопипаено с туториала), но она ведь и не запускается.