1 Star 0 Fork 17

mygit / fpage

forked from fy / fpage 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
WTFPL

fpage

FPage 是一个tornado项目生成器。

能够自动创建基于 tornado + mako/jinja2 + peewee/sqlalchemy 的项目。

使用

python fpage.py startapp

按照向导走,首先输入项目名。

然后选择一个模板引擎(Mako/Jinja2/Tornado)

其次是ORM选择(Peewee/SQLChemy)

最后输入 y 确认

生成的目录就是你需要的,你可以试一下 python app.py 来运行他,然后访问 http://127.0.0.1:9000 来查看效果

特性

  • 基于 tornado

  • MVT 架构(Model, View, Template)

  • 兼容 python 2 & python 3

  • 合理的安全性支持 (secure cookie, xsrf)

  • 支持 flask 风格的 url 路由装饰器 @route

  • 简单 session 支持(基于 secure cookie)

  • 可选择模板引擎 mako 或 jinjia2 或 tornado 默认,已做好配置

  • 模板预定义模板变量:req static url_for csrf_token/xsrf_token config

  • 集成 sqlalchemy/peewee 支持(二选一)

  • 集成消息闪现功能(类似 django 中 messages 或 flask 中 flash)

  • 集成简单的用户系统

  • 自动生成页面标题

目录结构

  • model 数据库交互

  • view 逻辑

  • templates 模板目录

  • lib 存放一些全局使用的工具类

特性说明

  • 支持 flask 风格的 url 装饰器 @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()
    
  • 简单 session 支持(基于 secure 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
    req -> request object

      ${ req.current_user }

    static -> static file

      <script src="${ static('js/main.js') }"></script>
      <link rel="stylesheet" href="${ static('css/style.css') }">

    url_for -> url reverse

      <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 中 messages 或 flask 中 flash)
    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
  • 自动生成页面标题

    例如:config.TITLE = 'FPage'

    渲染模板时写入参数 page_title

    self.render(page_title=page_title('测试板块', '社区')

    于是此页面网页标题就是:测试板块 » 社区 » FPage

更新

ver 1.2 wip

  • 现在 config 也作为模板中的一个预定义变量

  • 加入新的 View 基类: AjaxLoginView

  • 新的辅助函数:page_title,用来自定义标题

  • peewee 的 BaseModel 加入了几个工具函数:to_dict(转为字典)、get_by_pk(根据主键取项,无则返回None)、exists_by_pk(根据主键判断是否存在)

  • 修正了“记住密码”选项无效的问题

  • 用户注册增加了“再次输入密码”的校验

  • 登录和注册增加了参数 next,用来指定操作完成后跳转的url

ver 1.1 update 2015.9.20

  • 加入了用户模块

  • 加入了与用户相关的两个View基类:LoginView(登陆后可访问) 和 NoLoginView(非登陆可访问)

  • 加入了一个不检查 xsrf 的基类 AjaxView

  • 默认 ORM 切换为 peewee

  • 一些小的修正

TODO-LIST

  • 保持更新
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2015 fy Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO.

简介

FPage 是一个tornado项目生成器,能够帮你生成基于 tornado + mako/jinja2 + sqlalchemy/peewee 的项目,节省时间。从https://github.com/fy0/fpage镜像 展开 收起
WTFPL
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/dloveff/fpage.git
git@gitee.com:dloveff/fpage.git
dloveff
fpage
fpage
master

搜索帮助