我正在尝试将新的网址格式添加到项目urls.py(而不是应用程序网址)中。我无法在stackoverflow上找到任何相关信息!
编辑: 我正在编写一个简单的脚手架应用程序。对于给定的模型,我会动态创建应用程序的表单,视图,模板和urls.py.最后一件事是将应用程序的urls.py添加(附加)到项目的urls.py.
答案 0 :(得分:2)
Django路由不允许这样的动态,因为路由表在应用程序启动时构建一次并且从不刷新。即使它是可刷新的,那么你应该使用数据库,套接字,Redis pubsub或者这样的机制在不同的服务器进程之间传递路由表的变化,你会弯曲Django框架以获得它不想做的事情。
相反,正如建议的那样,您需要一个通用的正则表达式钩子来匹配您想要“动态”的所有URL。然后,在此通用URL的视图代码中,您可以根据完整的输入URL和可用数据(例如,来自数据库)进行自己的路由。如果您愿意,您甚至可以在视图中构建自己的Django URL resolver,尽管这可能不是一个无问题的方法。
通常,解决这种情况的更好方法称为遍历。 Django本身不支持遍历,but other Python web frameworks like Pyramid support traversal。