Pregunta

Estoy haciendo una nueva página web para reemplazar uno actual, usando Frasco micro-marco (basado en Werkzeug), que utiliza Python (2.6 en mi caso).

La funcionalidad del núcleo y muchas páginas son los mismos. Sin embargo mediante el uso Frasco muchas de las URL anteriores son diferentes a las anteriores.

necesito una manera de alguna manera almacenar cada una de las antiguas direcciones URL y la nueva dirección URL, de modo que si un usuario escribe una dirección de edad que simplemente se pasan a la nueva URL y todo funciona bien para ellos.


¿Alguien sabe si esto es posible en el frasco?

Gracias de antemano por su ayuda: -)

¿Fue útil?

Solución

Algo como esto debería empezar:

from flask import Flask, redirect, request

app = Flask(__name__)

redirect_urls = {
    'http://example.com/old/': 'http://example.com/new/',
    ...
}

def redirect_url():
    return redirect(redirect_urls[request.url], 301)

for url in redirect_urls:
    app.add_url_rule(url, url, redirect_url)

Otros consejos

Otra manera de hacer esto es cambiar el controlador para el antiguo URL para redirección simplemente de forma explícita.

from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/new')
def new_hotness():
    return 'Sizzle!'

@app.route('/old')
def old_busted():
    return redirect(url_for('new_hotness'))

Si ya tiene un controlador para la antigua URL, entonces es posible encontrar la cosa más fácil de hacer es lo anterior, es decir, sólo la sustitución del cuerpo con:

return redirect(url_for('new_hotness'))

La respuesta de Radomir puede ser preferible especialmente si usted tiene una gran cantidad de asignaciones de URL pasadas de nuevo, sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top