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

OSCHINA-MIRROR/fy0-fpage

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README_EN.md

FPage — генератор проектов классического стиля для Tornado (cli)

FPage — это генератор проектов классического стиля (classic) для Tornado, работающий через интерфейс командной строки (cli).

Classic означает стиль разработки до того, как разделение фронтенда и бэкенда стало популярным.

С помощью FPage можно быстро запустить проект на основе Tornado с использованием Mako/Jinja2 и Peewee/SQLAlchemy.

Использование

Для установки FPage используйте pip:

pip install fpage

или запустите:

python fpage.py new [project-name]

Пошаговые действия:

  1. Введите название проекта.
  2. Выберите механизм шаблонов (Mako, Jinja2 или Tornado).
  3. Выберите предпочитаемую ORM (Peewee или SQLAlchemy).
  4. Нажмите 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 Route, подобные Flask (@route).
  • Предоставляет простую поддержку сеансов (на основе безопасных cookie).
  • Позволяет выбрать предпочитаемый механизм шаблонов (Mako/Jinja2/Tornado).
  • Определяет переменные шаблона: req, static, url_for, csrf_token/xsrf_token, config.
  • Даёт возможность выбрать предпочитаемую ORM SQLAlchemy/Peewee.
  • Имеет функцию мигания сообщений (похожую на Django и Flask).
  • Включает простую систему пользователей.
  • Содержит инструмент для помощи в заголовке страницы.
  • Предлагает расширение фильтра для модели Peewee model_to_dict.
  • Оснащён пагинатором.

Директории

  • model
  • view
  • templates
  • lib — tools

Примеры функций

  • Декоратор URL Route, подобный 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/jinjia2/tornado)
<body>
    ${self.body()}
    <%block name="script"/>
</body>
<body>
    {% block body %}{% endblock %}
    {% block script %}{% endblock %}
</body>
  • Определённые переменные шаблона: req, static, url_for, csrf_token/xsrf_token, config 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>

config — конфигурация.

DATABASE_URI = "sqlite:///database.db"
  • Выбор предпочтительной ORM sqlalchemy/peewee Конфигурация
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 и Flask) Вид
@route('/jump_test', name='jump')
class Jump(View):
    def get(self):
        self.messages.error('Message Test: Error!!')
        self.redirect(url_for('about'))

Шаблон

% for msg in get_messages():
    % if msg.tag == 'success':
``` **TODO-LIST**

* ничего.

**Фильтр для расширения peewee**

См. `lib/pvpatch.py`.

**Инструмент для помощи в заголовке страницы**

Конфигурация:
```python
config.TITLE = 'FPage'

Просмотр:

self.render(page_title=page_title('Test Board', 'Forum'))

Заголовок страницы: «Test Board» — «Forum» — FPage.

Paginator

Модель. Pagination_peewee / модель. Pagination_sqlalchemy.

Определение:

def pagination(count_all, query, page_size, cur_page=1, nearby=2):
    pass

Возврат:

{
  "cur_page": cur_page,
  "prev_page": prev_page,
  "next_page": next_page,

  "first_page": first_page,
  "last_page": last_page,

  "page_numbers": list(items),
  "page_count": page_count,

  "items": [...],
  "info": {
    "page_size": page_size,
    "count_all": count_all
  }
}

Комментарии ( 0 )

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

Введение

FPage — это генератор проектов на основе Tornado, который помогает создавать проекты с использованием Mako/Jinja2 и SQLAlchemy/Peewee, экономя время. Доступно в виде образа по ссылке: https://github.com/fy0/fpage. Развернуть Свернуть
WTFPL
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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