首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >天气预报Web应用

天气预报Web应用
EN

Code Review用户
提问于 2020-07-05 13:16:58
回答 1查看 109关注 0票数 4

我制作了一个Python应用程序,我对主模块的结构有一些疑问(相当于index.py)。

如下所示:

代码语言:javascript
复制
from flask import Flask, render_template

import database as db    
import weather_forecast as wf
import os



app = Flask(__name__)


@app.route("/")
@app.route("/home")
def home():
    return render_template('home.html',  
                       sites=db.create_site_list_sqlite(),
                       api_key=os.environ.get('GOOGLE_MAPS_JS_API_KEY')) 
                      

@app.route("/contact")
def contact():
    return render_template('contact.html')

@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))





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

我的应用程序中有三个页面,homecontact和动态创建的weather_forecast url。

基本上,当home()函数运行并呈现主页模板时,它运行这一行:sites=db.create_site_list_sqlite() -- create_site_list_sqlite()函数从SQLite数据库返回一串数据,该数据库用于填充一些a href超链接。当用户单击其中一个链接时,它将转到由def weather_forecast()路由创建的天气预报页面。然后使用相同的数据在继续的天气预报页面中填充URL。

我这样做的原因是,这是运行create_site_list_sqlite()函数的最佳方法。我本来可以通过重新运行这个函数来填充weather_forecast url,但它似乎是多余的。

这是尽可能少地运行create_site_list_sqlite()函数(或任何其他函数)的良好实践吗?

另外,由于我需要从该函数返回的内容(climbing_areacity_idlatlonweather_site)中获得几条数据,所以天气预报页面的url相当长。我个人认为这很好,但如果可能的话,是否有理由加强这一点?举个例子,以下是天气预报页面URL的样子:

代码语言:javascript
复制
http://localhost:5000/weather_forecast/Ibex/5538080/38.881/-113.461/Delta

谢谢您的意见。

EN

回答 1

Code Review用户

发布于 2020-07-05 13:31:11

URL

URL组件通常应该从“最宽到最窄”从左到右显示。我不完全相信目前的情况是这样的-天气站点可能比纬度和经度更“宽”。

这座城市是在登山区,还是在攀岩区?如果攀登区域在(或小于)一个城市,他们的位置应该颠倒。

这些参数中有多少可以从其他参数中推断出来?如果您只指定了城市,那么可以推断出默认坐标吗?尝试从路径中省略尽可能多的可选参数,并将它们移动到查询参数。

票数 3
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/245033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档