[心得]Flask技術に基づくwebブログ開発まとめ
6892 ワード
Flaskは主にwerkzengとjinja 2テンプレートに依存します.werkzengはroute,debug,webサービスを提供し,jinja 2テンプレートはウェブフロントエンド展示機能を提供する.bootstrapはtwitterのオープンソースフレームワークであり、ユーザーインタフェースのコンポーネントをflaskで容易に多重化することができる.表現層状態遷移(Representational State Transfer,REST)アーキテクチャリソースはRESTアーキテクチャ方式の核心概念である.RESTアーキテクチャでは、リソースはプログラムの中で注目しなければならないものです.
1つのプロジェクトを開発した後、
開発で呼び出された依存ライブラリをファイルにdumpします.導入時に、
依存するライブラリを一気に詰めることができます.
このブログは、ユーザー認証、フォームチェック、ユーザー権限データベース管理、関心関係設定、ブログ公開、個人ホームページなどの機能を備えています.
各機能については、まずmain/viewsから.pyで対応するルーティングを検索し、フォームの検証を経て、対応するページをジャンプします.これは青写真blueprintで、青写真の役割はルーティングを簡素化することです.
青写真を使用するには、インスタンス化appを遅らせるためにファクトリモードを採用する必要があります.
これはルーティングの例です.
各ページがjinja 2テンプレートで多重化されると、フロントエンドの編集効率が向上します.
総じて言えば、Flaskコアは軽量で、開発された機能は主に既存のモジュールを組み合わせています.
付録:MD編集ショートカットメモ
太字 斜体 参照挿入リンク 挿入コード 挿入画像 昇格タイトル 秩序リスト 無秩序リスト 横線 を取り消す.やり直し コロンを使用して位置合わせを定義できます.
プロジェクト
価格
数量
Computer
1600元
5
Phone
12元
12
Pipe
1元
234
Markdown Extra定義リスト構文:
プロジェクト1
プロジェクト2
定義A
定義B
プロジェクト3
定義C
定義D
Dコンテンツの定義
コードブロック構文は、標準markdownコードに従います.たとえば、
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エディタは、ブラウザのオフラインストレージを使用してコンテンツをローカルに保存します.