更换成FastAPI架构,修正了一处量表描述。
This commit is contained in:
parent
6040a574fa
commit
f65e26e093
@ -1,3 +0,0 @@
|
||||
## 生产环境:
|
||||
|
||||
pip install -r requirements.txt && gunicorn -w 4 -b 0.0.0.0:5000 app:app
|
48
app.py
48
app.py
@ -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 os
|
||||
from flask import Flask, render_template, request
|
||||
import uvicorn
|
||||
|
||||
app = Flask(__name__)
|
||||
app = FastAPI()
|
||||
templates = Jinja2Templates(directory="templates")
|
||||
|
||||
# 加载所有问卷数据
|
||||
def load_all_scales():
|
||||
@ -17,21 +22,27 @@ def load_all_scales():
|
||||
scales[scale_id] = scale
|
||||
return scales
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
@app.get("/", response_class=HTMLResponse)
|
||||
async def index(request: Request):
|
||||
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>')
|
||||
def scale(scale_id):
|
||||
@app.get("/scales/{scale_id}", response_class=HTMLResponse)
|
||||
async def scale(request: Request, scale_id: str):
|
||||
scales = load_all_scales()
|
||||
scale = scales.get(scale_id)
|
||||
if scale:
|
||||
return render_template('scale.html', scale_id=scale_id,scale=scale)
|
||||
return "问卷未找到", 404
|
||||
return templates.TemplateResponse("scale.html", {
|
||||
"request": request,
|
||||
"scale_id": scale_id,
|
||||
"scale": scale
|
||||
})
|
||||
raise HTTPException(status_code=404, detail="问卷未找到")
|
||||
|
||||
@app.route('/result/<scale_id>', methods=['POST'])
|
||||
def result(scale_id):
|
||||
@app.post("/result/{scale_id}", response_class=HTMLResponse)
|
||||
async def result(request: Request, scale_id: str):
|
||||
# 保留原有的计分逻辑...
|
||||
form_data = await request.form()
|
||||
# print(request.form)
|
||||
scales = load_all_scales()
|
||||
scale = scales.get(scale_id)
|
||||
@ -45,16 +56,21 @@ def result(scale_id):
|
||||
responses[question['subscale']] = 0
|
||||
ranges[question['subscale']] = [0,0]
|
||||
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:
|
||||
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']][1] += question['range'][1]
|
||||
# 这里可以添加保存数据到数据库等逻辑
|
||||
# print(ranges)
|
||||
return render_template('result.html', responses=responses, ranges=ranges, scale_title=scale['title'])
|
||||
return "问卷未找到", 404
|
||||
return templates.TemplateResponse("result.html", {
|
||||
"request": request,
|
||||
"responses": responses,
|
||||
"ranges": ranges,
|
||||
"scale_title": scale['title']
|
||||
})
|
||||
raise HTTPException(status_code=404, detail="问卷未找到")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
uvicorn.run(app,host='0.0.0.0',port=8000)
|
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
{
|
||||
"title": "中国大五人格问卷(简式版)",
|
||||
"description": "",
|
||||
"instructions": "下面是一些描述人们性格特点的句子,请根据每个句子与您性格相符程度选择相应的数字。1-5分别代表完全不符合、大部分不符合、有点不符合、大部分符合、完全符合。",
|
||||
"instructions": "下面是一些描述人们性格特点的句子,请根据每个句子与您性格相符程度选择相应的数字。1-6分别代表完全不符合、大部分不符合、有点不符合、有点符合、大部分符合、完全符合。",
|
||||
"questions": [
|
||||
{
|
||||
"id": "1",
|
||||
|
Loading…
x
Reference in New Issue
Block a user