Może pytanie dość trywialne, ale niestety nie mogę sobie z tym poradzić.
Mam we #flask route: @app.route('/page/', methods=['GET']) I wszystko jest ok. Natomiast chciałbym jeszcze dodać ścieżkę tylko dla '/page', która będzie redirectem do index, czyli jak myślałem że to zrobić:
@app.route('/page/', methods=['GET']) @app.route('/page', methods=['GET']) def page(project): if project: return render_template(pages/{project}.html') else: return redirect(url_for('index')) folder pages zawiera teplatki z project, ale 'page' jako takiego nie ma, chcę żeby wchodzic na localhost:5000/page/ zadziałał redirect do 'index'
@sokytsinolop: To w sumie mógłbyć dobry ruch :D Natomiast teraz, gdy mam dwa dekoratory i dwie funkcje do page i page/project to dostaję błąd: AssertionError: View function mapping is overwriting an existing endpoint function: page
Może pytanie dość trywialne, ale niestety nie mogę sobie z tym poradzić.
Mam we #flask route:
@app.route('/page/', methods=['GET'])
I wszystko jest ok.
Natomiast chciałbym jeszcze dodać ścieżkę tylko dla '/page', która będzie redirectem do index, czyli jak myślałem że to zrobić:
@app.route('/page/', methods=['GET'])
@app.route('/page', methods=['GET'])
def page(project):
if project:
return render_template(pages/{project}.html')
else:
return redirect(url_for('index'))
folder pages zawiera teplatki z project, ale 'page' jako takiego nie ma, chcę żeby wchodzic na localhost:5000/page/ zadziałał redirect do 'index'
Jak można to zrobić?
TypeError: page() missing 1 required positional argument: 'project'
@app.route('/page/', methods=['GET'])
def page(project):
return render_template(pages/{project}.html')
@app.route('/page', methods=['GET'])
return redirect(url_for('index'))
Tak czy inaczej, nie działa:
@app.route('/page/', methods=['GET'])
def page(project):
return render_template(f'projects/{project}.html') # wcięcie
@app.route('/page', methods=['GET'])
return redirect(url_for('index')) # z wcięciem lub bez - wywala błąd
AssertionError: View function mapping is overwriting an existing endpoint function: page
Druga funkcja musi się nazywać inaczej niż pierwsza, głupi błąd z mojej strony.
Całość teraz wygląda tak i działa:
@app.route('/page/', methods=['GET'])
def page():
return redirect(urlfor('index'))
@app.route('/page//', methods=['GET'])
def subpage(project):
return rendertemplate(f'projects/{project}.html')
Dziękuję bardzo i pozdrawiam serdecznie : D