db.session.query(Article.name, Article.url, Article.num).filter_by(onoff=1).all()
[("name1", "url1", "num1"), ("name2", "url2", "num2"), ... ]
def logged_in():
# в сессии будет храниться информация о том, что пользователь вошёл
return session.get('logged')
# от этого класса должны наследоваться все классы админки - кроме индекса
class MyView(BaseView):
def is_accessible(self):
return logged_in()
def _handle_view(self, name, **kwargs):
if not logged_in():
# делать редирект в некоторых случаях не стоит
return self.render('admin/login.html')
class AdminIndex(AdminIndexView):
@expose('/', methods=['GET', 'POST'])
def index(self):
if request.method == 'POST':
frm = request.form.get
login = frm('login')
password = frm('pass')
# проверяете введённые данные...
if ...
session.update({обновляете сессию})
session.modified = True
return self.render('admin/index.html')
else:
return self.render('admin/login.html',
error=u'Ошиблись паролем?..')
# уже вошёл, но перешёл на /admin/
if logged_in():
return self.render('admin/index.html')
return self.render('admin/login.html')
# остальные методы класса
env.get_template("my_template.html").render({
'my_view': my_view,
})
<div>{{ my_view() }}</div>