Eine Person, die mit Django ständig Web-Systeme entwickelt. Ich habe vor kurzem angefangen, Flask zu studieren, weil ich in meiner Freizeit eine einfache App erstellen möchte. Es ist nicht gut, zu viele Einstellungen in eine Datei zu packen, deshalb habe ich die auf MVC basierende Verzeichnisstruktur zusammengefasst.
flask_app
├ common
│ ├ libs
│ └ models ---Modell-
│ ├ user.py
│ └ ・ ・ ・
├ config ---Einstellungsordner
│ ├ base_setting.py ---Gemeinsame Einstellungen für jede Umgebung
│ ├ local_setting.py ---Einstellungen für die lokale Entwicklungsumgebung
│ └ production_setting.py ---Einstellungen für die Produktionsumgebung
├ controllers ---Regler
│ ├ index.py
│ └ ・ ・ ・
├ interceptors
│ ├ auth.py ---Verarbeitung des Authentifizierungssystems
│ └ error_handler.py ---Fehlerbehandlung
├ static ---Speicherort der statischen Datei
├ templates ---Vorlage
│ ├ common
│ │ └ layout.html
│ └ index.html
├ application.py ---Definieren Sie, was von mehreren Dateien verwendet wird (Flask-Instanz, DB, Umgebungsvariablen usw.).
├ manager.py ---App-Ausführungsskript (App-Eingang)
├ requirements.py ---Bibliotheksliste
└ www.py ---Routing
Ich werde in der Reihenfolge erklären.
app.config.from_pyfile("config/base_setting.py")Lesen Sie zuerst die allgemeinen Einstellungen mit. Die Einstellungen, die sich je nach Umgebung (Entwicklung / Produktion) ändern, sind die voreingestellten Umgebungsvariablen ops._Geändert, um je nach unterschiedlichem Konfigurationswert unterschiedliche Einstellungsdateien zu lesen.
#### **`flask_app/application.py`**
```flask
from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
import os
app = Flask(__name__)
manager = Manager(app)
app.config.from_pyfile("config/base_setting.py")
# linux export ops_config=local|production
# windows set ops_config=local|production
if "ops_config" in os.environ:
app.config.from_pyfile("config/%s_setting.py" % (os.environ['ops_config']))
db = SQLAlchemy(app)
Der Inhalt von Steuerungen ist in Funktionseinheiten unterteilt und wird unter Verwendung von Blaupausen unter www.py integriert.
flask_app/www.py
from interceptors.errorHandler import *
from interceptors.Auth import *
from application import app
from controllers.index import index_page
from flask_debugtoolbar import DebugToolbarExtension
toolbar = DebugToolbarExtension(app)
app.register_blueprint(index_page, url_prefix="/")
Definieren Sie das Modell in Modellen. Hier wird in user.py ein Testmodell definiert.
flask_app/common/models/user.py
from application import db
class User(db.Model):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(20), nullable=False)
Definieren Sie die eigentliche Verarbeitung in Controllern.
flask_app/controllers/index.py
from flask import Blueprint, render_template
from common.models.user import User
index_page = Blueprint("index_page", __name__)
@index_page.route("/")
def index():
name = "hello"
context = {"name": name}
context["user"] = {"nickname": "xxxx",
"id": "xxxxx", "home_page": "http://www.xxx"}
context["num_list"] = [1, 2, 3, 4, 5]
result = User.query.all()
context['result'] = result
return render_template("index.html", **context)
Registrieren Sie die Befehle runserver und create_all mit der add_commend-Methode des Managers.
flask_app/manager.py
from application import app, db, manager
from flask_script import Server, Command
from www import *
# web server
manager.add_command("runserver", Server(host = "0.0.0.0", use_debugger=True, use_reloader=True))
# create tables
@Command
def create_all():
from common.models.user import User
db.create_all()
manager.add_command("create_all", create_all)
def main():
manager.run()
if __name__ == "__main__":
# app.run( host = "0.0.0.0" )
try:
import sys
sys.exit( main() )
except Exception as e:
import traceback
traceback.print_exc()
`pip install -r require.py
`um die erforderlichen Module zu installieren. `flask_app / local_setting.py
`um den Benutzer, das Passwort, den Host und den Port von db entsprechend Ihrer Umgebung festzulegen. `python manager.py runserver
`undhttp://localhost:Greifen Sie auf 5000 zu und erfolgreich, wenn der nächste Bildschirm angezeigt wird!
![flask_app_image.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/545184/b64db0c9-64cf-0b1b-e7a8-9935f14b5008.jpeg)
## Quelle
Ich habe die Quelle auf gitHub hochgeladen. Wenn Sie also Zeit haben, [Download](https://github.com/shixujapan/flask_app) und spielen Sie damit.
## Was macht man als nächstes
* Erstellen Sie eine einfache CRUD-App mit Flask
* Betrachten Sie die Zusammenarbeit mit Vue.js
Recommended Posts