Python Flask Project Structure

Question:

src/
  api/
    urls.py:
from main import api
from views.user import UserView, UserDetailView


api.add_resource(UserView, '/api/users/')
api.add_resource(UserDetailView, '/api/users/<int:pk>')
src/
  main.py:
import os
import pymysql
from flask import Flask, send_from_directory
from flask_sqlalchemy import SQLAlchemy
from flask_restful import Api
from flask_cors import CORS


pymysql.install_as_MySQLdb()

app = Flask(__name__, static_url_path='', static_folder='./ui/build/web/')

app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY')
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = f'mysql://root:{os.environ.get("DB_PASSWORD")}@localhost/db'

CORS(app)

db = SQLAlchemy(app)

api = Api(app)

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def index(path):
    return send_from_directory(app.static_folder, 'index.html')


if __name__ == '__main__':
    app.run()

how do i connect those resources to the app when its running

Asked By: dev124816

||

Answers:

So, src/api/urls.py:

from views.user import UserView, UserDetailView

def register(api):
    api.add_resource(UserView, '/api/users/')
    api.add_resource(UserDetailView, '/api/users/<int:pk>')

And in src/main.py:

...
from flask_cors import CORS
from api.urls import register
...
api = Api(app)
register(api)
Answered By: Tim Roberts
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.