进阶:如何在 Jinja2 中使用 href
Advanced: How to use href in Jinja2
我想在 jinja2
模板中使用 href
将用户发送到基于 id
的特定结果,以了解有关该特定结果的更多信息。我创建了一个 route
url : ('view_assessment_result', '/view_assessment_result/{id}')
来呈现基于 id
的特定结果的所有细节。
我想做的事情:
当用户点击 ID
号码时,他们将被发送到路由 view_assessment_result/{some_id}
,该路由将根据在迭代 for a in assessment...
中找到的 id
呈现该页面的细节.
我尝试调查案例,但其他人似乎在使用 Flask,而我没有使用。下面的模板代码没有完成手头的任务。
查看下面的代码:
路由配置:
#Route convention: resource 'name' 'url dispath'
config.add_route('view_assessment_result', '/view_assessment_result/{id}')
jinja 模板
<tr>
{% for a in assessment_results %}
<td><a href="{{ '/view_assessment_result' }}">{{ a.id }}</a></td>
<td>{{ a.owner }}</td>
<td>{{a.assessment }}</td>
</tr>
{% endfor %}
查看呈现上面 href
发送的特定结果的配置:
@view_config(route_name='view_assessment_result', request_method='GET', renderer='templates/analyst_view.jinja2')
def view_assessment_result(request):
with transaction.manager:
assessment_result_id = int(request.matchdict['id'])
assessment_result = api.retrieve_assessment_result(assessment_result_id)
if not assessment_result:
raise HTTPNotFound()
#more code
您需要将 id 添加到您的 URL 路径中。添加 id(从 Python 变量 a.id
到你的 URL 的一种方法是使用 %
string formatting operator,像这样:
<a href="{{ '/view_assessment_result/%s'%a.id }}">{{ a.id }}</a>
此外,如果您的 a.id
可能包含特殊字符(/
、&
等),您可以通过 urlencode
过滤器转义它们:
<a href="{{ '/view_assessment_result/%s'%a.id|urlencode }}">{{ a.id }}</a>
您可以使用 request.route_path
生成 URL。
<a href="{{ request.route_path('view_assessment_result', id=a.id) }}">{{ a.id }}</a>
我想在 jinja2
模板中使用 href
将用户发送到基于 id
的特定结果,以了解有关该特定结果的更多信息。我创建了一个 route
url : ('view_assessment_result', '/view_assessment_result/{id}')
来呈现基于 id
的特定结果的所有细节。
我想做的事情:
当用户点击 ID
号码时,他们将被发送到路由 view_assessment_result/{some_id}
,该路由将根据在迭代 for a in assessment...
中找到的 id
呈现该页面的细节.
我尝试调查案例,但其他人似乎在使用 Flask,而我没有使用。下面的模板代码没有完成手头的任务。
查看下面的代码:
路由配置:
#Route convention: resource 'name' 'url dispath'
config.add_route('view_assessment_result', '/view_assessment_result/{id}')
jinja 模板
<tr>
{% for a in assessment_results %}
<td><a href="{{ '/view_assessment_result' }}">{{ a.id }}</a></td>
<td>{{ a.owner }}</td>
<td>{{a.assessment }}</td>
</tr>
{% endfor %}
查看呈现上面 href
发送的特定结果的配置:
@view_config(route_name='view_assessment_result', request_method='GET', renderer='templates/analyst_view.jinja2')
def view_assessment_result(request):
with transaction.manager:
assessment_result_id = int(request.matchdict['id'])
assessment_result = api.retrieve_assessment_result(assessment_result_id)
if not assessment_result:
raise HTTPNotFound()
#more code
您需要将 id 添加到您的 URL 路径中。添加 id(从 Python 变量 a.id
到你的 URL 的一种方法是使用 %
string formatting operator,像这样:
<a href="{{ '/view_assessment_result/%s'%a.id }}">{{ a.id }}</a>
此外,如果您的 a.id
可能包含特殊字符(/
、&
等),您可以通过 urlencode
过滤器转义它们:
<a href="{{ '/view_assessment_result/%s'%a.id|urlencode }}">{{ a.id }}</a>
您可以使用 request.route_path
生成 URL。
<a href="{{ request.route_path('view_assessment_result', id=a.id) }}">{{ a.id }}</a>