gpt4 book ai didi

python - 带有 4 个参数的 Jinja2/Flask url_for 创建一个 GET 请求

转载 作者:行者123 更新时间:2023-11-28 00:56:24 26 4
gpt4 key购买 nike

我的模板中有以下代码:

{% block body %}
{% for x in range(0, 4) %}
<a href="{{url_for('quiz', category=category, id=id2, type=clean_types[x]|string) }}">
{{clean_answers[x]}}
</a>
{% endfor %}
{% endblock %}

但是,对于我的最后一个参数,而不是获取:

127.0.0.1:5000/quiz/Books/1/True

我明白了:

127.0.0.1:5000/quiz/Books/1?type=True

您能解释一下为什么会发生这种情况,以及我如何解决这个问题吗?

我尝试过使用和不使用 |string 转换,我尝试先将一个单独的变量设置为 clean_types[x],然后再进行转换,但它仍然显示为 ?type=True。

作为引用,clean_types 是一个包含 4 个项目的列表,以不同的顺序排列为 True 或 False,它随着 flask 中模板的返回而传递。

生成链接的路由是:

@app.route('/quiz/<category>/<int:id>')

def quiz(category, id):

questions = list(db_quiz.getQuestionsByCategory(category))

clean_question = questions[id][1]
print(id)
print(id+1)
print(clean_question)

dirty_answers = []

for x in range(0, 4):
dirty_answers.append(questions[0][2 + x])

shuffled_answers = random.sample(dirty_answers, len(dirty_answers))

clean_answers = [i.split(',')[0] for i in shuffled_answers]
clean_types = [i.split(',')[1] for i in shuffled_answers]

print("---------------")

print(clean_answers)
print(clean_types)

clean_types_v2 = ('ja', 'nee', 'nee', 'nee')

id2=id+1
return flask.render_template('quiz.html',
category=category,
id2=id2,
clean_question=clean_question,
clean_types=clean_types,
clean_answers=clean_answers)

基础模板

<head>
<meta charset="UTF-8">
<title>tinyQuiz</title>
<link rel="icon" type="image/png" href="{{ url_for('static', filename='img/favicon.png') }}" />
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/reset.css') }}" />
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/style.css') }}" />
{% block head %}{% endblock %}
</head>

<body>
<div class="verticalAlign">
<img src="{{ url_for('static', filename='img/logo.png') }}" />

<h1>tinyQuiz{% block h1 %}{% endblock %}</h1><br/>
<h2>{% block h2 %}{% endblock %}</h2><br id="br" />
<h3>{% block h3 %}{% endblock %}</h3><br/><br id="br"/>

{% block body %} {% endblock %}
</div>
<script src="{{ url_for('static', filename='js/jquery-3.2.1.js') }}"></script>
</body>
</html>

扩展它的测验模板:

{% extends "base.html" %}

{% block head %}
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='css/quiz.css') }}" />
{% endblock %}

{% block h2 %} You are playing: {{ category.capitalize() }} {% endblock %}

{% block h3 %} {{ clean_question }} {% endblock %}

{% block body %}

{% for x in range(0, 4) %}
<a href="{{url_for('quiz', category=category, id=id2, type=clean_types[x]) }}">
{{clean_answers[x]}}
</a>
{% endfor %}
{% endblock %}

链接应该指向的路由是:

@app.route('/quiz/<category>/<int:id>/<type>')
def trivia(category, id, type):
if type == 'True':
# scores.append(1) #add one to show you got a question correctly
return flask.render_template('trivia_true.html')
else:
# scores.append(0) #add zero to show you failed to answer correctly
return flask.render_template('trivia_false.html')

这里是关于 github 项目的链接

最佳答案

我看到您的 HTML a href 链接是正确的。但是在你的 quiz 函数中路由 url 构造是错误的,应该是...

@app.route('/quiz/<category>/<int:id>/<type>')
def quiz(category, id, type):

关于python - 带有 4 个参数的 Jinja2/Flask url_for 创建一个 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44607593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com