from fastapi import APIRouter, Depends, Form, Request from fastapi.responses import HTMLResponse, RedirectResponse from sqlalchemy.orm import Session from database import SessionLocal router = APIRouter(prefix="/admin/step1", tags=["step1"]) def get_db(): db = SessionLocal() try: yield db finally: db.close() @router.get("", response_class=HTMLResponse) def step1_page(request: Request, db: Session = Depends(get_db)): rows = db.execute(""" SELECT * FROM step1_attr ORDER BY base_template_id, attr_key, sort_order """).fetchall() html = """

Step1 模板配置

模板ID:
属性Key:
属性名:
值ID:
值名称:
必填:
多选:

""" last_tpl = None for r in rows: if r.base_template_id != last_tpl: html += f"

模板 {r.base_template_id}

" last_tpl = r.base_template_id html += f"""
[{r.attr_name}] {r.value_name}
""" return html @router.post("/add") def add_step1( base_template_id: int = Form(...), attr_key: str = Form(...), attr_name: str = Form(...), value_id: int = Form(...), value_name: str = Form(...), required: int = Form(1), is_multi: int = Form(0), db: Session = Depends(get_db) ): db.execute(""" INSERT INTO step1_attr (base_template_id, attr_key, attr_name, value_id, value_name, required, is_multi) VALUES (:tpl,:k,:n,:vid,:vname,:r,:m) """, { "tpl": base_template_id, "k": attr_key, "n": attr_name, "vid": value_id, "vname": value_name, "r": required, "m": is_multi }) db.commit() return RedirectResponse("/admin/step1", status_code=302)