python - python Flask - 在服务器上找不到请求的 URL。(但为什么?)
问题描述
老实说,我不确定我应该在这里问什么问题。也许有人可以编辑我的标题以更具描述性?
我有一个有时会返回的 python 烧瓶应用程序:
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
关于何时发生这种情况有一种模式,但我无法弄清楚它为什么会发生。
我有一个主页,用户单击谷歌地图上的标记,然后单击超链接“查看预报”按钮,将他们带到天气预报页面:
在我的主要 python 文件(相当于 index.py)中,我为下一页创建路由,如下所示:
@app.route("/weather_forecast/<climbing_area>/<city_id>/<lat>/<lon>/<weather_site>") #creates url using climbing area name, city id, lat, lon, and location of weather site
def weather_forecast(climbing_area, city_id, lat, lon, weather_site):
return render_template('weather_forecast.html',
climbing_area=climbing_area,
city_id=city_id,
daily_forecast=wf.format_daily_forecast(city_id),
extended_forecast=wf.format_extended_forecast(city_id),
historical_forecast=wf.get_historical_weather(lat, lon),
dates=wf.get_date_range(),
lat=lat,
lon=lon,
weather_site=weather_site,
sites=db.create_site_list_sqlite(),
api_key=os.environ.get('GOOGLE_MAPS_JS_API_KEY'),
image_url=wf.image_choice(lat, lon, city_id))
如您所见,地图上有许多标记,其中 95% 的标记都做对了,点击后会转到天气预报页面。但其中一些没有。它们始终不起作用。
每个天气预报网站的 URL 都是由这个模板动态生成的:
/weather_forecast/<climbing_area>/<city_id>/<lat>/<lon>/<weather_site>
这些是从 /home 页面路由返回的变量。我的第一个想法是:因为这些是从后端(SQLite)动态生成的变量,可能没有为这些特定站点返回数据,这会导致页面失败?但我已经为这些选定的几个站点验证了数据可用。
此网址有效:
http://localhost:5000/weather_forecast/Humboldt%20County/5558953/41.03/-124.113/Arcata
此网址无效:
http://localhost:5000/weather_forecast/Mount%20Yonah/Tallulah%20Gorge/4188197/34.637/-83.72200000000001/Clarkesville
我不希望有一个神奇的代码修复,但有人可以建议我还能寻找什么?或者在我的问题中包含哪些其他信息会有所帮助。
解决方案
允许的 URL 是:
/weather_forecast/<climbing_area>/<city_id>/<lat>/<lon>/<weather_site>
您可能正在尝试访问 URL:
/weather_forecast/<climbing_area>/<city_id>/<lat>/<lon>/<weather_site>/
URL 的末尾有一个斜杠。由于flask代码中的url最后没有斜杠,所以会报错。
另外,请发布您要访问的 URL。这将有助于提供更准确的解决方案。
推荐阅读
- python - 如何在 Python 中使用 opencv 或 PIL 提取混合到另一个图像中的图像
- python - 是否可以将某个语音频道中的用户静音,而不是将他们从不和谐的频道中删除?(Python)
- python - PyQt中类(滑块+标签)的多个实例相互阻塞
- javascript - 将状态传递给基于函数的组件时面临的问题
- docker - 将 xterm.js 附加到 Docker 容器
- r - 在 R 中按用户定义的函数和回归进行聚合
- c# - 如何在 ASP.NET MVC 中的应用程序生命周期中只初始化和反初始化一次
- javascript - if 语句语法错误
- error-handling - eslint: no-undef - `$` 未定义"
- symfony - 在 Symfony 的自定义 Doctrine 类型中通过依赖注入使用 Symfony 的序列化程序