如何在 Flask 中创建友好 url?
How create friendly url in Flask?
如何在 Flask 中创建友好 url?
路线中会写什么
/
并且用户收到了(Url是从数据库中按类别构造的)
/machines/cars/modern/Lexus 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
你可以尝试类似的方法:
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'}
如何在 Flask 中创建友好 url?
路线中会写什么
/
并且用户收到了(Url是从数据库中按类别构造的) /machines/cars/modern/Lexus 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
你可以尝试类似的方法:
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'}