簡體   English   中英

使用Flask在Python模塊中碰撞命名空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM