FPage — это традиционный генератор проектов на основе Tornado (до разделения на фронтэнд и бэкэнд).
Он может автоматически создавать проекты на базе Tornado, Mako/Jinja2, Peewee/SQLAlchemy.
Примеры проектов: StoryNote, MyCTF и другие.
Через pip:
pip install fpage
fpage new [имя проекта]
Или клонируйте проект и используйте его напрямую:
python fpage.py new [имя проекта]
Далее следуйте инструкциям мастера. Сначала введите имя проекта. Затем выберите шаблонный движок (Mako/Jinja2/Tornado) и ORM (Peewee/SQLChemy). В конце подтвердите выбор, нажав «y».
Созданная структура каталогов будет соответствовать вашим потребностям. Вы можете попробовать запустить проект, выполнив команду python app.py
, а затем перейти по адресу http://127.0.0.1:9000 для просмотра результата.
Пример:
# fpage new test_project
Project Name (test_project):
Template Engine [M/J/T]:
Database ORM [P/S]:
Project Name: test_project
Template Engine: mako
Database ORM: peewee
Sure (Y/n)?
Complete.
To get started:
cd test_project
python app.py
Served at http://localhost:9000
from view import route, url_for, View
@route('/')
class Index(View):
def get(self):
self.render()
def post(self):
pass
@route('/about', name='about')
class About(View):
def get(self):
self.render()
@route('/')
class Index(View):
def get(self):
self.session['test'] = 'session test 1'
del self.session['test']
self.session['test'] = 'session test 2'
self.render(s=self.session['test'])
<body>
${self.body()}
<%block name="script"/>
</body>
<body>
{% block body %}{% endblock %}
{% block script %}{% endblock %}
</body>
${ req.current_user }
static — статический файл.
<script src="${ static('js/main.js') }"></script>
<link rel="stylesheet" href="${ static('css/style.css') }">
url_for — реверсирование URL.
<p><a href="${ url_for('jump') }">Jump Page</a></p>
<p><a href="${ url_for('about') }">About Page</a></p>
csrf_token — self.xsrf_form_html().
<form method="post" class="am-form">
${csrf_token}
</form>
DATABASE_URI = "sqlite:///database.db"
SQLAlchemy:
from model import BaseModel
from sqlalchemy import Column, Integer, String, Float, ForeignKey, Boolean
class Test(BaseModel):
__tablename__ = 'test'
id = Column(Integer, primary_key=True, autoincrement=True)
test = Column(String)
Peewee:
from peewee import *
from model import BaseModel
class Test(BaseModel):
test = TextField()
@route('/jump_test', name='jump')
class Jump(View):
def get(self):
self.messages.error('Message Test: Error!!')
self.redirect(url_for('about'))
template:
% for msg in get_messages():
% if msg.tag == 'success':
<div class="ui-green">
${msg.txt}
</div>
% elif msg.tag == 'error':
<div class="ui-red">
${msg.txt}
</div>
% endif
% endfor
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )