2016-12-19 1 views
0

Я новичок в питона колбукак дать структуру питона приложения колба

Экспериментируя несколько конечных точек с 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() 

Над кодом, который содержит две конечные точки, чтобы получить возможность отправлять и получить данные, которые работают отлично

Know ищет способ отделить код в отдельный файл, как

соединения RELAT базы данных изд-код должен быть в другом файле

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) 

я должен быть в состоянии получить ссылку DB в разных файлах, где схема определения и использования его

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: Также называется routes.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/статический/... Содержит статические файлы.

yourapp/templates/.. Состоит из ваших шаблонов.

requirements.txt имеет моментальный снимок зависимости вашего пакета.

venv (Virtualenv), где ваши библиотеки python должны работать в замкнутой среде.

Ссылки:

Have a look at this related question.

Good example of a widely used project structure.

+0

@Beat \t Я обновил свой ответ, чтобы включить более обширный обзор того, что структура может выглядеть следующим образом. Пожалуйста, просмотрите еще раз. –

+0

Я следую тому же каталогу, что и выше, но когда я запускаю run.py, я получаю сообщение об ошибке Traceback (последний последний звонок): Файл «run.py», строка 1, в от flaskApp import create_app Файл «D: \ углового-питон \ pythonAppStructure \ flaskApp \ __ init__.py», линия 3, в от конфигурации импорта конфигурации ImportError: не может импортировать имя конфигурации пожалуйста, что я делаю неправильно м –

+0

@dhana Лакшми Попробуйте изменить его слишком «from config import Config» (вторая конфигурация с заглавной буквой) –

 Смежные вопросы

  • Нет связанных вопросов^_^