Files
2020-06-05 18:58:57 +08:00

63 lines
1.5 KiB
Python

import os
import uvicorn
from fastapi import FastAPI
from starlette.middleware.cors import CORSMiddleware
from tortoise.contrib.fastapi import register_tortoise
from fastapi_admin.factory import app as admin_app
from fastapi_admin.site import Site
TORTOISE_ORM = {
"connections": {"default": os.getenv("DATABASE_URL")},
"apps": {
"models": {
"models": ["examples.models", "fastapi_admin.models"],
"default_connection": "default",
}
},
}
def create_app():
fast_app = FastAPI(debug=False)
register_tortoise(fast_app, config=TORTOISE_ORM, generate_schemas=True)
fast_app.mount("/admin", admin_app)
fast_app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
return fast_app
app = create_app()
@app.on_event("startup")
async def start_up():
admin_app.debug = False
admin_app.init(
user_model="User",
tortoise_app="models",
admin_secret="test",
permission=True,
site=Site(
name="FastAPI-Admin DEMO",
login_footer="FASTAPI ADMIN - FastAPI Admin Dashboard",
login_description="FastAPI Admin Dashboard",
locale="en-US",
locale_switcher=True,
theme_switcher=True,
),
login_view="examples.routes.login",
)
if __name__ == "__main__":
uvicorn.run("main:app", port=8000, debug=False, reload=False, lifespan="on")