Почему Flask ищет шаблоны в двух разных каталогах? - PullRequest
0 голосов
/ 29 мая 2020

Я работаю над своим первым веб-приложением на основе Flask Python. Локально он работает нормально, но когда я загружаю его, у меня возникают проблемы с путями к файлам.

Приложение Flask в настоящее время ищет две разные страницы по этим адресам:

mysite.org / flaskapp / mysite.org/flaskapp/about/

ссылки на первую (домашнюю) страницу работают нормально. Но ссылка на страницу «О программе» перескакивает вверх по каталогу на mysite.org/about/.

Я просмотрел множество вопросов о stackoverflow и других ресурсах, и я пробовал использовать аргумент template_folder, но Мне не удалось убедить приложение искать оба файла в нужном месте.

Вот отображение файла root в приложении:

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

@app.route('/about')
def about():
    return render_template('about.html', title='About')

if __name__ == '__main__':
    app.run(debug=True)

И вот соответствующая часть шаблона html:

          <div class="collapse navbar-collapse" id="navbarToggle">
            <div class="navbar-nav mr-auto">
              <a class="nav-item nav-link" href=".">Home</a>
              <a class="nav-item nav-link" href="./about">About</a>
            </div>

1 Ответ

1 голос
/ 29 мая 2020

Я предполагаю, что вы используете стандартный шаблон Jinja2, что означает, что вместо жесткого кодирования URL-путей в ваших шаблонах вы должны использовать url_for () .

url_for() принимает забавное c имя конечной точки в качестве аргумента и возвращает локальный путь для URL-адреса, что означает, что он делает всю тяжелую работу за вас. При добавлении url_for() в ваш шаблон он будет выглядеть так:

<div class="collapse navbar-collapse" id="navbarToggle">
    <div class="navbar-nav mr-auto">
        <a class="nav-item nav-link" href="{{ url_for('home') }}">Home</a>
        <a class="nav-item nav-link" href="{{ url_for('about') }}">About</a>
    </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...