如何使用flask在一个文件夹中路由多个nav项目

2024-04-18 20:07:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用flask开发一个旅游网站。我有一个带有城市名称的目的地文件夹。单击下拉导航项时,将显示这些城市,单击城市后,页面应重定向到相关城市。导航代码如下:

<li><a href="#">Destinations</a>
  <ul class="nav-dropdown">
   <li><a href="destinations/london">London</a></li>
   <li><a href="destinations/paris">Paris</a></li>
   <li><a href="destinations/newyork">New York</a></li>
   <li><a href="destinations/moscow">Moscow</a></li>
   <li><a href="destinations/vegas">Las Vegas</a></li>
   <li><a href="destinations/pataya">Pataya</a></li>
  </ul>
</li>

demo.py代码如下:

from flask import Flask, render_template

@app.route('/destinations/{id}', methods = ['GET'])
def destinations(id):
    page = 'destinations/'+id+'.html'
    return render_template(page)

如何正确路由此页面


Tags: 代码文件夹名称idflask网站pagetemplate
2条回答

我会有一个上下文处理器,它维护所需链接的字典:

@app.context_processor
def processor():
  """ This function injects vars into every page """
  cities = {
            'paris':'Paris',
            'newyork': 'New York',
            'moscow':'Moscow',
            'vegas':'Las Vegas',
            'pataya':'Pataya'
            }
  
  return dict(CITIES=cities)

在某个时候,您可以从数据库或其他存储构建此词典

然后在模板中包括:

<li><a href="#">Destinations</a>
  <ul class="nav-dropdown">
   {% for city_id,city_name in CITIES.items() %}

     <li><a href="{{ url_for('destinations', id=city_id) }}">{{city_name}}</a></li>

   {% endfor %}
  </ul>
</li>

这个url_for函数生成一个类似于:/destinations/paris的URL

此方法避免了必须手动将城市名称/ID写入模板文件

你的代码中只有一个小错误。您必须将/destinations/{id}中id的花括号更改为/destinations/<id>,然后代码将完美地工作

相关问题 更多 >