ユーザーおよび管理者がいるフラスコにサイトを作成する必要があることがあります。 純粋に私自身のために、私はそれを何らかの形で標準化し、最も重要なことには、そのようなタスクが現れたときに時間を無駄にしないことに決めました。 目標は、以下の機能を備えたサイトを取得することです。
- 登録
- メール確認
- ログイン
- ログアウト
- 管理者と管理者の役割
- サイトの管理部分、ユーザー部分、パブリック部分
- パスワードを変更するユーザー機能
- パスワード回復
- 外国語のローカライズ
スクリーンショット
すぐに使用できるものは次のとおりです。
認証後のユーザープロファイル:
flask-adminの管理者 :
このようなサイトは、次の2つの方法で取得できます。
Iオプション。 フラスコユーザーとSQLデータベースの使用
インストールと起動
これらのコマンドの後、サイトは
でスクリーンショットのように開く必要があります。
ユーザー:user@example.comパスワード:Password1。
管理者:admin@example.comパスワード:Password1。
Python 3.4を搭載したLinuxで実行してテストしましたが、どの3.xでも「離陸」するはずです。
GitHubへのリンク。
コンソールインストールサンプル
設置
cd ~ # virtualenv env # . env/bin/activate mkdir -p ~/www/my_app cd www git clone https://github.com/Alexmod/Flask-User-and-Flask-admin.git my_app cd my_app/ # pip install -r requirements.txt # python manage.py init_db # py.test tests/ # , python manage.py runserver
これらのコマンドの後、サイトは
http://localhost:5000/
でスクリーンショットのように開く必要があります。
ユーザー:user@example.comパスワード:Password1。
管理者:admin@example.comパスワード:Password1。
Python 3.4を搭載したLinuxで実行してテストしましたが、どの3.xでも「離陸」するはずです。
GitHubへのリンク。
コンソールインストールサンプル
最初のオプションの詳細
基礎として、 Flask-Userモジュールとこのリポジトリを使用しました。 追加/変更されたもの:
詳細
基礎として、 Flask-Userモジュールとこのリポジトリを使用しました。 追加/変更されたもの:
- テンプレートとフラッシュメッセージの両方のローカライズが追加されました。 言語サポート:(ドイツ語、英語、スペイン語、ペルシア語、フィンランド語、フランス語、イタリア語、デンマーク語、ロシア語、スウェーデン語、トルコ語、中国語)。 言語がリストにない場合、構成ではデフォルトでロシア語がデフォルトとして設定されます。
# local_settings.py BABEL_DEFAULT_LOCALE = 'ru'
ロシア語でローカライズを行いました。
app/translations/ru/LC_MESSAGES/flask_user.po
Flask-Babelはフラッシュメッセージで素晴らしい仕事をしましたが、フォームの行をロシア語に翻訳してテンプレートに変換するには:
{%trans%}Forgot your Password?{%endtrans%} {{ _('Sign in') }}
私はたむろしなければなりませんでした。 追加者:
import gettext
そしてこの関数:
def set_lang(lang): i18n_dir = app.config['BABEL_TRANSLATION_DIRECTORIES'] gettext.install('lang', i18n_dir) trans_file = i18n_dir + lang + '/LC_MESSAGES/flask_user' tr = gettext.translation(trans_file, 'locale', languages=[lang]) tr.install(True) app.jinja_env.install_gettext_translations(tr)
- 登録時に姓と名のフィールドを削除しました。 私の経験では、これが必要になることはめったにありませんが、面倒なユーザーです。
- すべての* .pyファイルはpep-8標準に変換されます
- ロードされているが使用されていない未クリーニングのモジュール
- ルートは3つの部分に分かれています:public、admin、user(public_view.py、members_views.py、下の管理パネルについて)
- flask_bootstrapモジュールが追加され 、それに伴ってテンプレートとフラッシュメッセージの表示が変更されます
{% import "bootstrap/utils.html" as utils %} {{ utils.flashed_messages(dismissible=True, container=False) }}
layout.htmlファイル内。
- Flask-Admin管理パネル( ハブに関する記事)を追加しました。 いくつかの簡単な操作の後、ユーザーのアクティブ化、非アクティブ化、および削除を許可し、ロールを追加できるようにしました。 さらに、静的ファイルを操作します(サーバーへのアップロード、削除、フォルダーの作成など)。 これまでのところ、ローカライズなし。
Flask-AdminとFlask-Userは、user_models.pyを共有するときに友達を作りたくありませんでした。
Flask-Adminのmodels.py用に別のファイルを作成する必要がありましたが、それらが互いに干渉する理由をまだ理解できませんでした。
IIオプション。 Flask-SecurityとMongoDBの使用
スクリーンショット
すぐに使用できるものは次のとおりです。
スクリーンショット
すぐに使用できるものは次のとおりです。
インストールと起動
git、virtualenv、およびmongoDBが既にインストールされていることを願っています。
これらのコマンドの後、サイトは
でスクリーンショットのように開く必要があります。
ユーザー:user@example.comパスワード:Password1。
管理者:admin@example.comパスワード:Password1。
Python 3.6を使用してLinuxで実行しましたが、3.xでは「離陸」するはずです。
MongoDBのGitHubリンク
設置
git、virtualenv、およびmongoDBが既にインストールされていることを願っています。
cd ~ # virtualenv env # . env/bin/activate # mkdir -p ~/www/my_app cd www git clone https://github.com/Alexmod/flask-security-flask-admin-mongodb.git my_app cd my_app # pip install -r requirements.txt # python manage.py runserver
これらのコマンドの後、サイトは
http://localhost:5000/
でスクリーンショットのように開く必要があります。
ユーザー:user@example.comパスワード:Password1。
管理者:admin@example.comパスワード:Password1。
Python 3.6を使用してLinuxで実行しましたが、3.xでは「離陸」するはずです。
MongoDBのGitHubリンク
最初と2番目のオプションの展開
デプロイには多くの方法があります。 これが最も簡単なものです。
gunicornを配置します。
pip install gunicorn
my_appフォルダーで、次の内容の新しいwsgi.pyファイルを作成します。
from app import create_app app = create_app()
そして実行:
gunicorn wsgi:app
すべてが順調に進むと、
http://127.0.0.1:8000
//127.0.0.1:8000にnginxまたはapacheにねじ込むことができるサイトができます。 次に、systemdが自動的に起動するように設定し、local_settings.pyファイルの行を変更することを忘れないでください:
DEBUG = True # False