У меня есть 2 маршрута, и они имеют одинаковый шаблон URL - @app.route('/<var1>/')
и @app.route('/<var2>/')
.
И у них разные функции просмотра - view_fcn_1
и view_fcn_2
соответственно.
Однако, когда я вызвал их в своем шаблоне my-template.html
по
<a href="{{url_for('view_fcn_1', var1='I-am-var1') }}">First View Function</a>
<a href="{{url_for('view_fcn_2', var1='I-am-var2') }}">Second View Function</a>
На самом деле я вошел в view_fcn_1
, когда нажимал на ссылку для функции второго просмотра
Я знаю, что могу вроде решить проблему, сделав шаблон URL отличается, например, @app.route('/<var1>/1')
и @app.route('/<var2>/2')
.
Но мне интересно, является ли это ожидаемым поведением или я что-то упустил, поэтому я в конечном итоге получаю такое забавное поведение моего кода?
Большое вам спасибо за продвинутый уровень!
Ниже показано, что я действительно вошел в view_fcn_1
, когда я предположительно звонил view_fcn_2
* Running on http://0.0.0.0:5020/ (Press CTRL+C to quit)
127.0.0.1 - - [25/Apr/2020 02:28:48] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [25/Apr/2020 02:28:48] "GET /favicon.ico HTTP/1.1" 308 -
first
127.0.0.1 - - [25/Apr/2020 02:28:48] "GET /favicon.ico/ HTTP/1.1" 200 -
127.0.0.1 - - [25/Apr/2020 02:28:49] "GET /I-am-var1/ HTTP/1.1first
" 200 -
127.0.0.1 - - [25/Apr/2020 02:28:50] "first
GET /favicon.ico/ HTTP/1.1" 200 -
first
127.0.0.1 - - [25/Apr/2020 02:28:51] "GET /favicon.ico/ HTTP/1.1" 200 -
first
127.0.0.1 - - [25/Apr/2020 02:28:52] "GET /I-am-var2/ HTTP/1.1" 200 -
first
127.0.0.1 - - [25/Apr/2020 02:28:52] "GET /favicon.ico/ HTTP/1.1" 200 -
Мое приложение:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/<var1>/')
def view_fcn_1(var1):
print('first')
return('generated by first view function' + var1)
@app.route('/<var2>/')
def view_fcn_2(var2):
print('second')
return('generated by second view function' + var2)
@app.route('/')
def index():
return render_template('/my-template.html')
if __name__ == '__main__':
app.run("0.0.0.0", "5000")
my-template. html
<html>
<body>
<a href="{{url_for('view_fcn_1', var1='I-am-var1') }}">First View Function</a>
<a href="{{url_for('view_fcn_2', var2='I-am-var2') }}">Second View Function</a>
</body>
</html>