Я исхожу из кода PHP-кода спагетти. Я пытаюсь изучить MVC, разрезав свои зубы на Python с помощью Flask и MongoDB. Я думаю, что этот вопрос может применяться к другим ситуациям. Это вопрос новичков на Python. Но именно здесь я впервые сталкиваюсь с этой настройкой.Реализация MVC в Python? (используя Flask and MongoKit)
Я использую Flask с чертежами для компоновки своего приложения. Я разбиваю каждую главную функцию сайта в подкаталог myapp (модуль/проект). Вот моя структура каталогов
Dir структура
/proj/config.py
/proj/runserver.py
/proj/myapp/
/proj/myapp/__init__.py
/proj/myapp/static/
/proj/myapp/templates/
/proj/myapp/templates/users/
/proj/myapp/templates/forums/
/proj/myapp/templates/frontend/
/proj/myapp/users/
/proj/myapp/users/__init__.py
/proj/myapp/users/models.py
/proj/myapp/users/views.py
/proj/myapp/forums/ ..
/proj/myapp/frontend/ ..
Так что я пытаюсь выполнить этот простой пример MongoKit. Но вместо того, чтобы иметь его в одном файле. Мне нужно разложить его по шаблону MVC.
образец MongoKit
from flask import Flask, request, render_template, redirect, url_for
from flask.ext.mongokit import MongoKit, Document
app = Flask(__name__)
class User(Document):
__collection__ = 'user'
structure = {
'name': unicode,
'email': unicode,
}
required_fields = ['name', 'email']
use_dot_notation = True
db = MongoKit(app)
db.register([User])
Основная часть моего приложения в инициализации .py и выглядит следующим образом:
/MyApp/_ INIT _.py
from flask import Flask, render_template, abort
from flask.ext.mongokit import MongoKit, Document
from .home.views import mod as home_blueprint
from .users.views import mod as user_blueprint
from .forums.views import mod as forum_blueprint
def create_app():
app = Flask(__name__)
app.config.from_object('config')
# Register blueprints
app.register_blueprint(home_blueprint)
app.register_blueprint(user_blueprint, url_prefix="/users")
app.register_blueprint(forum_blueprint, url_prefix="/forums")
db = MongoKit(app)
@app.errorhandler(404)
def not_found(error):
return render_template('404.html')
@app.errorhandler(500)
def internal_error(exception):
return "Some internal error has taken place. Alert somebody!"
return app
И тогда я не совсем уверен, что делать с остальными. Я настраиваю класс в /myapp/users/models.py, как показано ниже. Я знаю, что последнее утверждение не определено. Я не уверен, если он пойдет туда, или мне нужно положить его куда-нибудь еще. Или, если он туда пойдет, как мне получить «db» из create_app() в init .py. Я полагаю, что это связано не только с MongoKit и базовым материалом Python.
/myapp/users/models.py
from flask.ext.mongokit import MongoKit, Document
class User(Document):
structure = {
'name': unicode,
'email': unicode,
}
use_dot_notation = True
db.register([User])