1

我在 my_module.py 中有我的应用程序,并且在 posts/ 中有请求处理程序。帖子里面有几个不同的python文件。

我的应用程序结构如下所示:

./
    my_module.py
    posts/
        __init__.py
        post1.py
        post2.py
        post3.py

所以在 post1、post2 和 post3 中,有 2 个函数:添加和删除。

在 my_module 中,我像这样导入 post1-3:

import posts.post1
import posts.post2
import posts.post3

我在 my_module 中有指向添加和删除函数的路由,就像 view_functions 一样:

app.add_url_rule('/post1_add', methods=['POST'], view_func=posts.post1.add)
app.add_url_rule('/post1_delete', methods=['POST'], view_func=posts.post1.delete)

app.add_url_rule('/post2_add', methods=['POST'], view_func=posts.post2.add)
app.add_url_rule('/post2_delete', methods=['POST'], view_func=posts.post2.delete)

app.add_url_rule('/post3_add', methods=['POST'], view_func=posts.post3.add)
app.add_url_rule('/post3_delete', methods=['POST'], view_func=posts.post3.delete)

出于某种原因,当我向上面添加的任何 URL 发出 post 请求时,它们都会向最后添加的 URL 的成员发出请求。在这种情况下是posts.post3。

当我将成员函数名称更改为唯一时,如 中post1_add,应用程序使用其 view_function 正确发出请求。

这是什么原因造成的?

4

1 回答 1

2

add_url_rule使用 .__name__作为默认端点名称,端点名称必须在一定程度上唯一标识端点。

将端点名称传递给add_url_rule喜欢:

app.add_url_rule('/posts1_add', methods['POST'], 'posts1_add', posts.post1.add)

但是对于这种设计模式,我认为您可能应该使用蓝图。

于 2013-04-12T23:28:05.107 回答