更换成FastAPI架构,修正了一处量表描述。

This commit is contained in:
mxr612 2025-03-04 23:51:03 +08:00
parent 6040a574fa
commit f65e26e093
4 changed files with 33 additions and 20 deletions

View File

@ -1,3 +0,0 @@
## 生产环境:
pip install -r requirements.txt && gunicorn -w 4 -b 0.0.0.0:5000 app:app

48
app.py
View File

@ -1,8 +1,13 @@
from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import json import json
import os import os
from flask import Flask, render_template, request import uvicorn
app = Flask(__name__) app = FastAPI()
templates = Jinja2Templates(directory="templates")
# 加载所有问卷数据 # 加载所有问卷数据
def load_all_scales(): def load_all_scales():
@ -17,21 +22,27 @@ def load_all_scales():
scales[scale_id] = scale scales[scale_id] = scale
return scales return scales
@app.route('/') @app.get("/", response_class=HTMLResponse)
def index(): async def index(request: Request):
scales = load_all_scales() scales = load_all_scales()
return render_template('index.html', scales=scales) return templates.TemplateResponse("index.html", {"request": request, "scales": scales})
@app.route('/scales/<scale_id>') @app.get("/scales/{scale_id}", response_class=HTMLResponse)
def scale(scale_id): async def scale(request: Request, scale_id: str):
scales = load_all_scales() scales = load_all_scales()
scale = scales.get(scale_id) scale = scales.get(scale_id)
if scale: if scale:
return render_template('scale.html', scale_id=scale_id,scale=scale) return templates.TemplateResponse("scale.html", {
return "问卷未找到", 404 "request": request,
"scale_id": scale_id,
"scale": scale
})
raise HTTPException(status_code=404, detail="问卷未找到")
@app.route('/result/<scale_id>', methods=['POST']) @app.post("/result/{scale_id}", response_class=HTMLResponse)
def result(scale_id): async def result(request: Request, scale_id: str):
# 保留原有的计分逻辑...
form_data = await request.form()
# print(request.form) # print(request.form)
scales = load_all_scales() scales = load_all_scales()
scale = scales.get(scale_id) scale = scales.get(scale_id)
@ -45,16 +56,21 @@ def result(scale_id):
responses[question['subscale']] = 0 responses[question['subscale']] = 0
ranges[question['subscale']] = [0,0] ranges[question['subscale']] = [0,0]
if 'reverse' in question and question['reverse']: if 'reverse' in question and question['reverse']:
responses[question['subscale']] += question['range'][1] + question['range'][0] - int( request.form[question['id']]) responses[question['subscale']] += question['range'][1] + question['range'][0] - int( form_data[question['id']])
else: else:
responses[question['subscale']] += int( request.form[question['id']]) responses[question['subscale']] += int( form_data[question['id']])
ranges[question['subscale']][0] += question['range'][0] ranges[question['subscale']][0] += question['range'][0]
ranges[question['subscale']][1] += question['range'][1] ranges[question['subscale']][1] += question['range'][1]
# 这里可以添加保存数据到数据库等逻辑 # 这里可以添加保存数据到数据库等逻辑
# print(ranges) # print(ranges)
return render_template('result.html', responses=responses, ranges=ranges, scale_title=scale['title']) return templates.TemplateResponse("result.html", {
return "问卷未找到", 404 "request": request,
"responses": responses,
"ranges": ranges,
"scale_title": scale['title']
})
raise HTTPException(status_code=404, detail="问卷未找到")
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True) uvicorn.run(app,host='0.0.0.0',port=8000)

Binary file not shown.

View File

@ -1,7 +1,7 @@
{ {
"title": "中国大五人格问卷(简式版)", "title": "中国大五人格问卷(简式版)",
"description": "", "description": "",
"instructions": "下面是一些描述人们性格特点的句子请根据每个句子与您性格相符程度选择相应的数字。1-5分别代表完全不符合、大部分不符合、有点不符合、大部分符合、完全符合。", "instructions": "下面是一些描述人们性格特点的句子请根据每个句子与您性格相符程度选择相应的数字。1-6分别代表完全不符合、大部分不符合、有点不符合、有点符合、大部分符合、完全符合。",
"questions": [ "questions": [
{ {
"id": "1", "id": "1",