0

Flask の navbar アイテムを JinJia2 テンプレートにリンクするより良い方法はありますか?

render_templateその HTML ページへのナビバーのすべてのアイテムのルートを作成したくありません。

@main.route('/')
def index():
    return render_template('index.html')

<li><a href="{{ url_for('main.index') }}">Home</a></li>

template変数を使用して別のルートを作成しようとしましたが、フォルダーのルートの下にある HTML ページでのみ機能します

@main.route('/<page>')
def show(page):
    return render_template('%s.html' % page)

<li><a href="{{ url_for('main.show', page='profile') }}">My Profile</a></li>

フォルダーの下のページを取得したい場合template/team、500エラーが返されます

<li><a href="{{ url_for('main.show', page='team/members') }}">Members</a></li>

これを正しく行ってnavbarをリンクしていますか? ルートが完全に機能するように修正するにはどうすればよいですか? または、これを行うためのより良い方法はありますか?

4

2 に答える 2

3

デフォルトでは、ルートの変数は文字列に一致します。

@main.route('/<page>')

と同じことです

@main.route('/<string:page>')

ディレクトリを含めるには、パスに一致するように指示する必要があります。

@main.route('/<path:page>')
def show(page):
    return render_template('%s.html' % page)

これは一致します

url_for('main.show', page='profile')

としても

url_for('main.show', page='team/members')
于 2014-08-13T00:45:18.833 に答える
1

複数のルートを追加できます。

@main.route('/')
@main.route('/<page>')
def showpage(page=None):
   if page:
      # called with page parameter
      return render_template('%s.html' % page)
   else:
      # called with no parameters 
      return render_template('index.html')

テンプレート上:

<li><a href="{{ url_for('main.showpage') }}">Home</a></li>
<li><a href="{{ url_for('main.showpage', page='profile') }}">My Profile</a></li>
于 2014-08-12T23:47:01.527 に答える