Odpowiedzi:
Bierze argumenty słów kluczowych dla zmiennych:
url_for('add', variable=foo)
url_for
przejdą jako parametry funkcji dla zmiennych tras reguł w Flask
@app.route("/<a>/<b>")
i def function(a,b): ...
jako funkcję, powinieneś użyć url_for
i podać argumenty tego słowa kluczowego w następujący sposób:url_for('function', a='somevalue', b='anothervalue')
url_for
in Flask służy do tworzenia adresu URL, aby uniknąć konieczności zmiany adresów URL w całej aplikacji (w tym w szablonach). Bez tego url_for
, jeśli nastąpi zmiana w głównym adresie URL Twojej aplikacji, musisz ją zmienić na każdej stronie, na której znajduje się link.
Składnia: url_for('name of the function of the route','parameters (if required)')
Może być używany jako:
@app.route('/index')
@app.route('/')
def index():
return 'you are in the index page'
Teraz, jeśli masz link do strony indeksu: możesz użyć tego:
<a href={{ url_for('index') }}>Index</a>
Możesz z nim zrobić wiele rzeczy, na przykład:
@app.route('/questions/<int:question_id>'): #int has been used as a filter that only integer will be passed in the url otherwise it will give a 404 error
def find_question(question_id):
return ('you asked for question{0}'.format(question_id))
Do powyższego możemy użyć:
<a href = {{ url_for('find_question' ,question_id=1) }}>Question 1</a>
W ten sposób możesz po prostu przekazać parametry!
{{ url_for('find_question' ,question_id=question.id) }}
a nie{{ url_for('find_question' ,question_id={{question.id}}) }}
Zobacz dokument Flask API dlaflask.url_for()
Inne przykładowe fragmenty użycia do łączenia js lub css z szablonem znajdują się poniżej.
<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
Szablony:
Podaj nazwę funkcji i argument.
<a href="{{ url_for('get_blog_post',id = blog.id)}}">{{blog.title}}</a>
Widok, funkcja
@app.route('/blog/post/<string:id>',methods=['GET'])
def get_blog_post(id):
return id
def add(variable)
?