在Python中实现MVC? (使用Flask和MongoKit)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在Python中实现MVC? (使用Flask和MongoKit),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3473字,纯文字阅读大概需要5分钟。
内容图文
![在Python中实现MVC? (使用Flask和MongoKit)](/upload/InfoBanner/zyjiaocheng/785/5c15cd944b6c4f84a45c6fb8bfebefdd.jpg)
我来自意大利面条代码PHP背景.我正试图通过使用Flask和MongoDB在Python上学习来学习MVC.我认为这个问题可能适用于其他情况.这更像是一个新手Python问题.但这是我第一次使用此设置进入它的地方.
我正在使用Flask with Blueprints来布局我的应用程序.我将每个主要站点功能分解为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])
我的应用程序的主要部分是在init.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中设置了一个类,如下所示.我知道最后一个陈述没有定义.我不确定它是否存在,或者我是否需要将它放在其他地方.或者如果确实去了那里,我如何从init.py中的create_app()获取“db”.我认为这与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])
解决方法:
如果你想使用create_app函数,那么我会将你的__init__.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,db
# Make sure you are calling create_app func below:
(app,db) = create_app()
现在在您的模型代码中,您可以引用db变量.
/myapp/users/models.py
from flask.ext.mongokit import MongoKit, Document
# import db below like this
from myapp import db
class User(Document):
structure = {
'name': unicode,
'email': unicode,
}
use_dot_notation = True
# ok to do this below
db.register([User])
内容总结
以上是互联网集市为您收集整理的在Python中实现MVC? (使用Flask和MongoKit)全部内容,希望文章能够帮你解决在Python中实现MVC? (使用Flask和MongoKit)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。