присвоение url_for переменной и использование ее в качестве параметра в render_template, не работает - PullRequest
1 голос
/ 23 марта 2019

У меня проблема с url_for, я создаю страницу индекса с помощью HTML-кода, который я помещаю в переменную в views.py, эта переменная передается как параметр в функции render_template, на странице индекса с {{ content }}я могу получить html-код из функции и хорошо отобразить почти все данные, когда страница была загружена в href, я не вижу правильный маршрут, но вижу <a href="url_for('detail')"> вместо <a href="detail">.

Это views.py

for dog in dogs:
    url_detail = url_for('detail')
    htmlDog = htmlDog + '<div class="col-lg-4 col-md-6 col-sm-12 mt-3">
        <div class="animal_block mx-2"><img alt="animal image" src="' +  
        str(dog[6]) + '" class="img-fluid img-thumbnail" />
        <div class="text-center">' + str(dog[0]) + '</div><div>Lorem ipsum dolor sit
        amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut 

        labore et dolore magna aliqua...</div><div class="text-center">
        <a href='  + url_detail + '>look detail</a></div><span 
        class="animal_id">1</span></div></div>'

def home():
     return render_template(
        "index.html",
        content = htmlDogs,
        )

I have to call some function to encode htmlDog or use something different of render_template?

Спасибо

1 Ответ

0 голосов
/ 24 марта 2019

Flask's url_for полагается на контекст запроса, вы не можете поместить его вне функции представления, попробуйте переместить цикл for в функцию home.

Кроме того, вместо присоединения HTML-кода в Python вы должны написать цикл for непосредственно в шаблоне (index.html) с синтаксисом Jinja. Например:

<body>
{% for dog in dogs %}
    Put your html code here.
    You can generate URL like this: <a href="{{ url_for('detail') }}">
{% endfor %}
</body>

также не забудьте передать переменную dogs с помощью render_template:

@app.route('/')
def home():
     return render_template("index.html", dogs=dogs)

Прочитайте Документация Jinja для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...