更换成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 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)
|
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"title": "中国大五人格问卷(简式版)",
|
"title": "中国大五人格问卷(简式版)",
|
||||||
"description": "",
|
"description": "",
|
||||||
"instructions": "下面是一些描述人们性格特点的句子,请根据每个句子与您性格相符程度选择相应的数字。1-5分别代表完全不符合、大部分不符合、有点不符合、大部分符合、完全符合。",
|
"instructions": "下面是一些描述人们性格特点的句子,请根据每个句子与您性格相符程度选择相应的数字。1-6分别代表完全不符合、大部分不符合、有点不符合、有点符合、大部分符合、完全符合。",
|
||||||
"questions": [
|
"questions": [
|
||||||
{
|
{
|
||||||
"id": "1",
|
"id": "1",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user