Как придать структуру приложению Python колбу
Я новичок в колбе питона
Экспериментирование с некоторыми конечными точками с MongoDB, как показано ниже в одном файле
from flask import Flask, request
from flask.ext.mongoalchemy import MongoAlchemy
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['MONGOALCHEMY_DATABASE'] = 'library'
db = MongoAlchemy(app)
class Author(db.Document):
name = db.StringField()
class Book(db.Document):
title = db.StringField()
author = db.DocumentField(Author)
year = db.IntField();
@app.route('/author/new')
def new_author():
"""Creates a new author by a giving name (via GET parameter)
e.g.: GET /author/new?name=Francisco creates a author named Francisco
"""
author = Author(name=request.args.get('name', ''))
author.save()
return 'Saved :)'
@app.route('/authors/')
def list_authors():
"""List all authors.
e.g.: GET /authors"""
authors = Author.query.all()
content = '<p>Authors:</p>'
for author in authors:
content += '<p>%s</p>' % author.name
return content
if __name__ == '__main__':
app.run()
Над кодом, который содержит две конечные точки для публикации и получения данных, которые работают нормально
Знайте, ищите способ разделить код на другой файл, например
код, связанный с подключением к базе данных, должен находиться в другом файле
from flask import Flask, request
from flask.ext.mongoalchemy import MongoAlchemy
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['MONGOALCHEMY_DATABASE'] = 'library'
db = MongoAlchemy(app)
Я должен быть в состоянии получить ссылку на БД в разных файлах, где схема определяется и использовать его
class Author(db.Document):
name = db.StringField()
class Book(db.Document):
title = db.StringField()
author = db.DocumentField(Author)
year = db.IntField();
и маршруты будут другим файлом
@app.route('/author/new')
def new_author():
"""Creates a new author by a giving name (via GET parameter)
e.g.: GET /author/new?name=Francisco creates a author named Francisco
"""
author = Author(name=request.args.get('name', ''))
author.save()
return 'Saved :)'
@app.route('/authors/')
def list_authors():
"""List all authors.
e.g.: GET /authors"""
authors = Author.query.all()
content = '<p>Authors:</p>'
for author in authors:
content += '<p>%s</p>' % author.name
return content
Здесь, в файле конечных точек, я должен получить ссылку на схему базы данных, пожалуйста, помогите мне в получении этой структуры
Укажите на какой-нибудь понятный пример или видео, которые могут мне помочь, я новичок в Python, а также на флешке. Укажите пример и помогите узнать больше, спасибо
1 ответ
Базовая структура может выглядеть так:
/yourapp
/run.py
/config.py
/yourapp
/__init__.py
/views.py
/models.py
/static/
/main.css
/templates/
/base.html
/requirements.txt
/venv
Применительно к вашему примеру это будет выглядеть так.
run.py: запустите ваше приложение.
from yourapp import create_app
app = create_app()
if __name__ == '__main__':
app.run()
config.py: содержит конфигурацию, вы можете добавить подклассы, чтобы различать конфигурацию разработки, тестовую конфигурацию и производственную конфигурацию
class Config:
DEBUG = True
MONGOALCHEMY_DATABASE = 'library'
yourapp / __ init__.py: Инициализация вашего приложения с созданием экземпляра Flask. (Также делает ваше приложение пакетом).
from flask import Flask
from flask.ext.mongoalchemy import MongoAlchemy
from config import Config
db = MongoAlchemy()
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
from views import author_bp
app.register_blueprint(author_bp)
return app
yourapp / models.py: содержит ваши различные модели.
from . import db
class Author(db.Document):
name = db.StringField()
class Book(db.Document):
title = db.StringField()
author = db.DocumentField(Author)
year = db.IntField();
yourapp / views.py: также иногда называется rout.py. содержит ваши конечные точки URL и связанное с ними поведение.
from flask import Blueprint
from .models import Author
author_bp = Blueprint('author', __name__)
@author_bp.route('/author/new')
def new_author():
"""Creates a new author by a giving name (via GET parameter)
e.g.: GET /author/new?name=Francisco creates a author named Francisco
"""
author = Author(name=request.args.get('name', ''))
author.save()
return 'Saved :)'
@author_bp.route('/authors/')
def list_authors():
"""List all authors.
e.g.: GET /authors"""
authors = Author.query.all()
content = '<p>Authors:</p>'
for author in authors:
content += '<p>%s</p>' % author.name
return content
(в вашем случае это не обязательно)yourapp / static /... Содержит ваши статические файлы.
yourapp / templates /.. Содержит ваши шаблоны.
needs.txt имеет снимок ваших зависимостей пакета.
Папка venv (Virtualenv), в которой ваши python-библиотеки могут работать в изолированной среде.
Рекомендации: