[心得]Flask技術に基づくwebブログ開発まとめ


Flaskは主にwerkzengとjinja 2テンプレートに依存します.werkzengはroute,debug,webサービスを提供し,jinja 2テンプレートはウェブフロントエンド展示機能を提供する.bootstrapはtwitterのオープンソースフレームワークであり、ユーザーインタフェースのコンポーネントをflaskで容易に多重化することができる.表現層状態遷移(Representational State Transfer,REST)アーキテクチャリソースはRESTアーキテクチャ方式の核心概念である.RESTアーキテクチャでは、リソースはプログラムの中で注目しなければならないものです.
1つのプロジェクトを開発した後、
pip freeze > requirements.txt

開発で呼び出された依存ライブラリをファイルにdumpします.導入時に、
pip install -r requirements.txt

依存するライブラリを一気に詰めることができます.
このブログは、ユーザー認証、フォームチェック、ユーザー権限データベース管理、関心関係設定、ブログ公開、個人ホームページなどの機能を備えています.
各機能については、まずmain/viewsから.pyで対応するルーティングを検索し、フォームの検証を経て、対応するページをジャンプします.これは青写真blueprintで、青写真の役割はルーティングを簡素化することです.
from flask import Blueprint
main = Blueprint('main', __name__)
from . import views, errors

青写真を使用するには、インスタンス化appを遅らせるためにファクトリモードを採用する必要があります.
def create_app(config_name='default'):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)
    pagedown.init_app(app)
    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)
    from .auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint, url_prefix='/auth')
    from .api_1_0 import api as api_1_0_blueprint
    app.register_blueprint(api_1_0_blueprint, url_prefix='/api/v1.0')
    return app

これはルーティングの例です.
@main.route('/user/')
def user(username):
    user = User.query.filter_by(username).first()
    if user is None:
        abort(404)
    posts = user.posts.order_by(Post.timestamp.desc()).all()
    return render_template('user.html', user=user, posts=posts)

各ページがjinja 2テンプレートで多重化されると、フロントエンドの編集効率が向上します.
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% import "_macros.html" as macros %}

{% block title %}topcoder - Post{% endblock %}

{% block page_content %}
{% include '_posts.html' %}
<h4 id="comments">Commentsh4>
{% if current_user.can(Permission.COMMENT) %}
<div class="comment-form">
    {{ wtf.quick_form(form) }}
div>
{% endif %}
{% include '_comments.html' %}
{% if pagination %}
<div class="pagination">
    {{ macros.pagination_widget(pagination, '.post', fragment='#comments', id=posts[0].id) }}
div>
{% endif %}
{% endblock %}

総じて言えば、Flaskコアは軽量で、開発された機能は主に既存のモジュールを組み合わせています.
付録:MD編集ショートカットメモ

ショートカットキー

  • 太字Ctrl + B
  • 斜体Ctrl + I
  • Ctrl + Q
  • 参照
  • 挿入リンクCtrl + L
  • 挿入コードCtrl + K
  • 挿入画像Ctrl + G
  • 昇格タイトルCtrl + H
  • 秩序リストCtrl + O
  • 無秩序リストCtrl + U
  • 横線Ctrl + R
  • Ctrl + Z
  • を取り消す.
  • やり直しCtrl + Y
  • コロンを使用して位置合わせを定義できます.
    プロジェクト
    価格
    数量
    Computer
    1600元
    5
    Phone
    12元
    12
    Pipe
    1元
    234

    定義リスト


    Markdown Extra定義リスト構文:
    プロジェクト1
    プロジェクト2
    定義A
    定義B
    プロジェクト3
    定義C
    定義D
    Dコンテンツの定義

    コードブロック


    コードブロック構文は、標準markdownコードに従います.たとえば、python
    は、このエディタを介してブログをオフラインで書きます(以前使用したブラウザにwrite.blog.csdn.net/mdeditorを直接入力すればいいです.Markdownエディタは、ブラウザのオフラインストレージを使用してコンテンツをローカルに保存します.