SQLまたはMongoDBデータベースを使用したFlaskの登録、ユーザー、および管理者を含む準備完了サイトテンプレート

フラスコ






ユーザーおよび管理者がいるフラスコにサイトを作成する必要があることがあります。 純粋に私自身のために、私はそれを何らかの形で標準化し、最も重要なことには、そのようなタスクが現れたときに時間を無駄にしないことに決めました。 目標は、以下の機能を備えたサイトを取得することです。





スクリーンショット



すぐに使用できるものは次のとおりです。















認証後のユーザープロファイル:







flask-adminの管理者







このようなサイトは、次の2つの方法で取得できます。



Iオプション。 フラスコユーザーとSQLデータベースの使用



インストールと起動

設置



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モジュールとこのリポジトリを使用しました。 追加/変更されたもの:



  1. テンプレートとフラッシュメッセージの両方のローカライズが追加されました。 言語サポート:(ドイツ語、英語、スペイン語、ペルシア語、フィンランド語、フランス語、イタリア語、デンマーク語、ロシア語、スウェーデン語、トルコ語、中国語)。 言語がリストにない場合、構成ではデフォルトでロシア語がデフォルトとして設定されます。



     # 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)
          
          





  2. 登録時に姓と名のフィールドを削除しました。 私の経験では、これが必要になることはめったにありませんが、面倒なユーザーです。
  3. すべての* .pyファイルはpep-8標準に変換されます
  4. ロードされているが使用されていない未クリーニングのモジュール
  5. ルートは3つの部分に分かれています:public、admin、user(public_view.py、members_views.py、下の管理パネルについて)
  6. flask_bootstrapモジュールが追加され 、それに伴ってテンプレートとフラッシュメッセージの表示が変更されます



     {% import "bootstrap/utils.html" as utils %} {{ utils.flashed_messages(dismissible=True, container=False) }}
          
          





    layout.htmlファイル内。

  7. Flask-Admin管理パネル( ハブに関する記事)を追加しました。 いくつかの簡単な操作の後、ユーザーのアクティブ化、非アクティブ化、および削除を許可し、ロールを追加できるようにしました。 さらに、静的ファイルを操作します(サーバーへのアップロード、削除、フォルダーの作成など)。 これまでのところ、ローカライズなし。







    Flask-AdminとFlask-Userは、user_models.pyを共有するときに友達を作りたくありませんでした。



    Flask-Adminのmodels.py用に別のファイルを作成する必要がありましたが、それらが互いに干渉する理由をまだ理解できませんでした。







IIオプション。 Flask-SecurityとMongoDBの使用













スクリーンショット

スクリーンショット



すぐに使用できるものは次のとおりです。

































インストールと起動

設置





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
      
      






All Articles