1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fy0-fpage

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 05:00 1d61a9d

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

Особенности

  • На основе Tornado.
  • Архитектура MVC (Model, View, Template).
  • Совместимость с Python 3 и Python 2.
  • Разумная поддержка безопасности (безопасные cookie, XSRF).
  • Поддержка декоратора URL-маршрутизации Flask @route.
  • Простая поддержка сеансов (на основе безопасных cookie).
  • Выбор шаблонного движка: Mako, Jinja2 или Tornado по умолчанию, с готовой конфигурацией.
  • Предопределённые переменные шаблона: req, static, url_for, csrf_token/xsrf_token, config.
  • Интеграция с SQLAlchemy/Peewee (выбор одного из двух).
  • Встроенная функция мигания сообщений (аналогично сообщениям Django или flash в Flask).
  • Интегрированная простая система пользователей.
  • Автоматическое создание заголовков страниц.
  • Опциональный компонент расширения Peewee.
  • Встроенный инструмент разбиения на страницы.

Структура каталогов

  • model — взаимодействие с базой данных.
  • view — логика.
  • templates — каталог шаблонов.
  • lib — некоторые глобальные инструменты.

Описание функций

  • Поддержка декоратора Flask @route:
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()
  • Простая поддержка сеансов (основанная на безопасных cookie):
@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'])
  • Выбор шаблонного движка Mako или Jinja2 или Tornado по умолчанию с готовой конфигурацией:
<body>
    ${self.body()}
    <%block name="script"/>
</body>
<body>
    {% block body %}{% endblock %}
    {% block script %}{% endblock %}
</body>
  • Предопределённые переменные шаблонов: req, static, url_for, csrf_token/xsrf_token: req — объект запроса.
${ 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>
  • Интеграция с SQLAlchemy/Peewee (выбор одного из двух): config:
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()
  • Встроенная функция мигания сообщений (аналогичная сообщениям Django или flash во Flask): view:
@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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/fy0-fpage.git
git@api.gitlife.ru:oschina-mirror/fy0-fpage.git
oschina-mirror
fy0-fpage
fy0-fpage
master