【问题标题】:How create friendly url in Flask? [duplicate]如何在 Flask 中创建友好的 url? [复制]
【发布时间】:2018-11-02 04:43:33
【问题描述】:

如何在 Flask 中创建友好的 url?

路线中会写什么

/

和用户收到的(Url是由数据库中的类别构建的) /机器/汽车/现代/雷克萨斯 LX570

是否可以这样做以及如何编写?

解决方案 1:

重定向 302

/product/<int:id_product> redirect to second route(get in databases) /machines/cars/modern/Lexus LX570

解决方案 2: 三url一函数获取id产品等数据库数据

@app.route('/')
def index():
    #use function for get data in database

@app.route('/<productName>')
def product(productName):
    #use function for get data in database


@app.route('/<path:fullPath>/<productName>')
def product_with_categories(fullPath,productName):
    #use function for get data in database

【问题讨论】:

  • edit您的帖子并详细说明您正在尝试做什么,您希望获得什么结果,以及您的整个路线设置。
  • 我在猜你想要什么,也许Flask Variable Rules 就是你想要的。

标签: python flask url-routing


【解决方案1】:

你可以试试这样的:

from flask import make_response, url_for, redirect, abort

@app.route('/<int:id_product>')
def product(id_product):
    # Load you path with id_product to get nice url (in database)
    if id_product == 123:
        path = '/machines/cars/modern/Lexus LX570'
    else:
        abort(404)
    return redirect(url_for('product_friendly_url', product_category_hierarchy=path))

@app.route('/<path:product_category_hierarchy>')
def product_friendly_url(product_category_hierarchy):
    # Retrieve product from his product_category_hierarchy (in database)
    product_item = {'id': 123, 'product_category_hierarchy': product_category_hierarchy, 'blabla': 'test'}
    return make_response(str(product_item))

在您的浏览器中调用 /123 会将您重定向 (302) 到“/machines/cars/modern/Lexus LX570”并打印:

{'id': 123, 'product_category_hierarchy': 'machines/cars/modern/Lexus LX570', 'blabla': 'test'}

【讨论】:

  • 对不起,表达不好 我需要 / 从数据库中我将​​获取类别的同义词。对于用户 /machines/cars/modern/Lexus LX570 应该是这样的
  • @Tarmor 你能编辑你的问题并添加更多细节吗?您需要的最终网址是什么? /machines/cars/modern/Lexus LX570/123 例如?
  • 开始 - / 我们从数据库中获取数据(产品类别)结束 - /machines/cars/modern/Lexus LX570
  • @Tarmor 我刚刚更新了我的答案,看看 ;)
  • 即像Drupal中一样通过同义词实现。一个方便的开发选择,但对 SEO 不利(如果我没记错的话)
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 2010-12-27
相关资源
最近更新 更多