高级:如何在Jinja2中使用href

问题描述 投票:6回答:3

我想使用href模板中的jinja2将用户发送到基于id的特定结果,以了解有关该特定结果的更多信息。我创建了一个route网址:('view_assessment_result', '/view_assessment_result/{id}'),它基于id呈现有关特定结果的所有详细信息。

我想做什么:当用户单击ID号时,他们将被发送到路由view_assessment_result/{some_id},该路由将根据在迭代id中找到的for a in assessment...呈现该页面的详细信息。我尝试调查案件,但其他人似乎正在使用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
python jinja2 pyramid
3个回答
6
投票

您需要将ID添加到您的URL路径中。将id添加(从Python变量a.id到URL的一种方法是使用% string formatting operator,如下所示:

%

此外,如果<a href="{{ '/view_assessment_result/%s'%a.id }}">{{ a.id }}</a> 可能包含特殊字符(a.id/等,则可以通过&过滤器对其进行转义:

urlencode

1
投票

您可以使用<a href="{{ '/view_assessment_result/%s'%a.id|urlencode }}">{{ a.id }}</a> 生成URL。

request.route_path

此处的文档:<a href="{{ request.route_path('view_assessment_result', id=a.id) }}">{{ a.id }}</a>


0
投票

我正在使用2个应用程序(使用python / flask构建)进行项目。第一个应用程序。 py是服务器第二个client.py是客户端。

现在我正在建立从用户访问acces用户的链接/ 8但这不起作用

这里是来自Jinja的users.html / client.py @route / eror消息下

users.html:

http://docs.pylonsproject.org/projects/pyramid/en/latest/api/request.html#pyramid.request.Request.route_path

client.py:

    {%block body%}   

        <div class="users">
                <div class="list-group">
                        {% for user in users %}

                        <a href ="{{ url_for('users/%s'%user[0]) }}" class="list-group-item list-group-item-action">
                                <div class="d-flex w-100 justify-content-between">
                                        <h5 class="mb-1">{{user[1]}}</h5>
                                        <small>{{user[0]}}</small>
                                </div>
                                <p class="mb-1">{{user[2]}}</p>
                                <small>Know more...</small>
                        </a>

                        {% endfor %}
                </div>


        </div>

{%endblock%}

错误消息:

    @client.route('/users/<id>')#ok works 
def user(id=None):
    if 'logged_in' in session:
        r = actualUser.get(id)
        user=json.loads(r.text)
        return render_template('user.html', user=user)
    else:
        return redirect(url_for('login'))
© www.soinside.com 2019 - 2024. All rights reserved.