Two route handlers get called
I have a simple Flask app which has two routes configured:
app = Flask(__name__)
app.route("/api/v1/foo")(api.bar)
@app.route('/')
@app.route('/<path:path>')
def view(path=None):
print 'BAZ'
return render_template('index.html')
api.bar
is defined as
def bar():
return "BAR";
Now, running locally, and visiting http://localhost/api/v1/foo
I will get the response I expect (just text BAR
), but looking at the console, I see that BAZ
was printed as well.
Shouldn't just the first matched route trigger? Or if this is expected, is there a way to specify the behaviour I need?
flask routes
add a comment |
I have a simple Flask app which has two routes configured:
app = Flask(__name__)
app.route("/api/v1/foo")(api.bar)
@app.route('/')
@app.route('/<path:path>')
def view(path=None):
print 'BAZ'
return render_template('index.html')
api.bar
is defined as
def bar():
return "BAR";
Now, running locally, and visiting http://localhost/api/v1/foo
I will get the response I expect (just text BAR
), but looking at the console, I see that BAZ
was printed as well.
Shouldn't just the first matched route trigger? Or if this is expected, is there a way to specify the behaviour I need?
flask routes
It always does what defined later..
– DarkSuniuM
Nov 20 at 19:34
Actually, the order doesn't matter. I just tested it, and whatever the order is, I get the response defined with '/api/v1/foo', but other view also gets executed.
– alh84001
Nov 20 at 19:50
According to flask docs,path
behaves exactly likestring
with one difference - it accepts slashes. In your situation (according to stackoverflow.com/questions/17759563/…)Werkzeug/Flask sorts the rules by complexity (amount of variables), taking the simplest routes first. Independent of the order you define the routes in.
it should print onlyBAR
. Please attach your logs.
– needtobe
Nov 20 at 20:54
add a comment |
I have a simple Flask app which has two routes configured:
app = Flask(__name__)
app.route("/api/v1/foo")(api.bar)
@app.route('/')
@app.route('/<path:path>')
def view(path=None):
print 'BAZ'
return render_template('index.html')
api.bar
is defined as
def bar():
return "BAR";
Now, running locally, and visiting http://localhost/api/v1/foo
I will get the response I expect (just text BAR
), but looking at the console, I see that BAZ
was printed as well.
Shouldn't just the first matched route trigger? Or if this is expected, is there a way to specify the behaviour I need?
flask routes
I have a simple Flask app which has two routes configured:
app = Flask(__name__)
app.route("/api/v1/foo")(api.bar)
@app.route('/')
@app.route('/<path:path>')
def view(path=None):
print 'BAZ'
return render_template('index.html')
api.bar
is defined as
def bar():
return "BAR";
Now, running locally, and visiting http://localhost/api/v1/foo
I will get the response I expect (just text BAR
), but looking at the console, I see that BAZ
was printed as well.
Shouldn't just the first matched route trigger? Or if this is expected, is there a way to specify the behaviour I need?
flask routes
flask routes
asked Nov 20 at 18:53
alh84001
6431822
6431822
It always does what defined later..
– DarkSuniuM
Nov 20 at 19:34
Actually, the order doesn't matter. I just tested it, and whatever the order is, I get the response defined with '/api/v1/foo', but other view also gets executed.
– alh84001
Nov 20 at 19:50
According to flask docs,path
behaves exactly likestring
with one difference - it accepts slashes. In your situation (according to stackoverflow.com/questions/17759563/…)Werkzeug/Flask sorts the rules by complexity (amount of variables), taking the simplest routes first. Independent of the order you define the routes in.
it should print onlyBAR
. Please attach your logs.
– needtobe
Nov 20 at 20:54
add a comment |
It always does what defined later..
– DarkSuniuM
Nov 20 at 19:34
Actually, the order doesn't matter. I just tested it, and whatever the order is, I get the response defined with '/api/v1/foo', but other view also gets executed.
– alh84001
Nov 20 at 19:50
According to flask docs,path
behaves exactly likestring
with one difference - it accepts slashes. In your situation (according to stackoverflow.com/questions/17759563/…)Werkzeug/Flask sorts the rules by complexity (amount of variables), taking the simplest routes first. Independent of the order you define the routes in.
it should print onlyBAR
. Please attach your logs.
– needtobe
Nov 20 at 20:54
It always does what defined later..
– DarkSuniuM
Nov 20 at 19:34
It always does what defined later..
– DarkSuniuM
Nov 20 at 19:34
Actually, the order doesn't matter. I just tested it, and whatever the order is, I get the response defined with '/api/v1/foo', but other view also gets executed.
– alh84001
Nov 20 at 19:50
Actually, the order doesn't matter. I just tested it, and whatever the order is, I get the response defined with '/api/v1/foo', but other view also gets executed.
– alh84001
Nov 20 at 19:50
According to flask docs,
path
behaves exactly like string
with one difference - it accepts slashes. In your situation (according to stackoverflow.com/questions/17759563/…) Werkzeug/Flask sorts the rules by complexity (amount of variables), taking the simplest routes first. Independent of the order you define the routes in.
it should print only BAR
. Please attach your logs.– needtobe
Nov 20 at 20:54
According to flask docs,
path
behaves exactly like string
with one difference - it accepts slashes. In your situation (according to stackoverflow.com/questions/17759563/…) Werkzeug/Flask sorts the rules by complexity (amount of variables), taking the simplest routes first. Independent of the order you define the routes in.
it should print only BAR
. Please attach your logs.– needtobe
Nov 20 at 20:54
add a comment |
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53399694%2ftwo-route-handlers-get-called%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53399694%2ftwo-route-handlers-get-called%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
It always does what defined later..
– DarkSuniuM
Nov 20 at 19:34
Actually, the order doesn't matter. I just tested it, and whatever the order is, I get the response defined with '/api/v1/foo', but other view also gets executed.
– alh84001
Nov 20 at 19:50
According to flask docs,
path
behaves exactly likestring
with one difference - it accepts slashes. In your situation (according to stackoverflow.com/questions/17759563/…)Werkzeug/Flask sorts the rules by complexity (amount of variables), taking the simplest routes first. Independent of the order you define the routes in.
it should print onlyBAR
. Please attach your logs.– needtobe
Nov 20 at 20:54