Other articles


  1. 使用flask实现一个简单的图片上传存储服务

    GitHub地址: https://github.com/honmaple/maple-file

    maple-file

    使用flask实现的一个简单的图片上传服务

    设计初衷

    对于图片的存储,有很多选择,一般采用云服务如(七牛,又拍等),但是国内的服务像七牛 自定义域名竟然需要域名备案(Excuse me …

    read more

    There are comments.

  2. flask使用token进行验证

    为什么需要用token验证

    原因呢是因为写博客时已经在本地写好了,但是要发表到网站上还需要这么几步:

    • 打开浏览器
    • 打开我的网站
    • 进入登陆页
    • 登陆
    • 进入后台页
    • 进入文章发表页
    • 复制粘贴
    • 发表

    所以使用*token*验证成为必然

    如何使用token?

    生成token

    使用*itsdangerous*对token进行加密

    class User(model):
             ......
    
             @property
             def token(self):
                 config = current_app.config
                 secret_key = config.setdefault('SECRET_KEY')
                 salt = config.setdefault('SECURITY_PASSWORD_SALT')
                 serializer = URLSafeTimedSerializer …

    read more

    There are comments.

  3. 如何安装及使用Honmaple社区程序

    如何安装及使用

    安装需要的package

    pip install -r requirements.txt
    

    配置config

    查看配置详细介绍

    注释下面代码 …

    read more

    There are comments.

  4. flask时间格式化

    在前端显示为该问题 "几分钟前发表或几天前发表"

    后端通过filter注册

    参考资料

    设计需求

    • 如果问题发表超过10天 ,则显示为 /%Y-%m-%d %H:%M/
    • 如果小于10天 ,但是大于1天 ,则显示为 /n天前/ 发表
    • 如果小于1天 ,但是大于1小时 ,则显示为 /n小时前/ 发表
    • 如果小于1小时 ,但是大于90秒 ,则显示为 /n分钟前/ 发表
    • 如果小于90秒 ,则显示为 /刚刚/ 发表

    具体实现

    通过 `diff.days …

    read more

    There are comments.

  5. 基于restful的flask权限管理

    为什么需要restful形式的权限管理

    最近在写flask应用时使用了 restful 形式的flask.views.MethodView,但是在对其进行权限管理时遇到了一些问题

    flask文档上介绍说用

    decorators = []
    

    添加装饰器,但实际使用上,比如

    • getpost 采用不同的权限

    get 不使用 login_required
    post 需要 login_required

    这样就不能使用 decorators 对视图进行装饰

    • post ,delete, put 都需要 login_required,但是get不需要 而 delete 又需要更高级别的权限,我们可以这样

      class AAA(MethodView):
      
          def get(self,uid):
              ...
      
          @login_required
          def post(self …
    read more

    There are comments.

  6. flask日志处理

    使用文档上的一句话:

    Applications fail, servers fail. Sooner or later you will see an exception in production. Even if your code is 100% correct, you will still see exceptions from time to time. Why? Because everything else involved will fail.

    应用发生错误时发送邮件

    这里文档上个人认为说的不清不楚,毕竟想要使用还要看logging的文档

    原文档

    ADMINS = ['yourname@example.com']
    if not …
    read more

    There are comments.

  7. flask中生成atom

    参考资料1 参考资料2

    下面是具体代码
    # from urlparse import urljoin #python2
    from urllib.parse import urljoin
    from flask import request
    from werkzeug.contrib.atom import AtomFeed
    
    
    def make_external(url):
        return urljoin(request.url_root, url)
    
    
    @site.route('/atom.xml')
    def feed():
        feed = AtomFeed('Recent Articles',
                        feed_url=request.url,
                        url=request.url_root,
                        subtitle='I …
    read more

    There are comments.

  8. flask实现分页

    数据库实现分页

    offset

    使用offset可以实现数据库分页功能

    questions = Questions.query.offset(num) # 从num开始
    

    limit

    使用limit实现限制每页的文章数量

    questions = Questions.query.offset(num).limit(6) #每页显示6篇文章
    

    前端实现分页

    需求设计

    是使用上一页,下一页,用表单进行跳转,还是使用数字显示

    获得文章数量 pages,和当前页码 number

    简单的上一页,下一页

    因为我的设计不是这个,所以简单说一下

    下一页,上一页

    jinja2 代码

    <a href="{{ url_for('blog.index',number=number + 1)}}">下一页</a>
    <a href …
    read more

    There are comments.