[英]Colliding Namespace in Python Module with Flask
我在my_module.py中有我的應用程序,並且在posts /中有請求處理程序。 帖子內部是幾個不同的python文件。
我的應用程序結構如下所示:
./
my_module.py
posts/
__init__.py
post1.py
post2.py
post3.py
因此在post1,post2和post3中,有兩個功能:添加和刪除。
在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發出發布請求時,它們都會指向最后添加的URL的成員發出請求。 在這種情況下是posts.post3。
當我將成員函數名稱更改為唯一時,例如post1_add
,應用程序將使用其view_function正確發出請求。
是什么原因造成的?
add_url_rule
使用__name__
作為默認端點名稱,端點名稱必須在某種程度上唯一標識端點。
將端點名稱傳遞給add_url_rule
例如:
app.add_url_rule('/posts1_add', methods['POST'], 'posts1_add', posts.post1.add)
但是對於這種設計模式,您可能應該使用我認為的藍圖 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.