Django:运行时url配置
是否有一种无痛的方式来修改运行时urlconf?e、 g.基于数据库记录 强力溶液:Django:运行时url配置,django,url-routing,Django,Url Routing,是否有一种无痛的方式来修改运行时urlconf?e、 g.基于数据库记录 强力溶液: r('^(.*)/', handmade_router_function) 对我来说太残忍了:) 提前谢谢 UPD: 我知道我可以直接从代码中修改urlpatterns,但这需要大量手工编码(自定义管理员保存操作、删除处理程序等)。我想弄清楚是否有现成的应用程序/库:)您是否尝试过在运行时修改“urlpatterns”变量?类似的方法很有效。您将迭代不同的内容,例如您提到的模型实例,但前提是相同的: for
r('^(.*)/', handmade_router_function)
对我来说太残忍了:)
提前谢谢
UPD:
我知道我可以直接从代码中修改urlpatterns,但这需要大量手工编码(自定义管理员保存操作、删除处理程序等)。我想弄清楚是否有现成的应用程序/库:)您是否尝试过在运行时修改“urlpatterns”变量?类似的方法很有效。您将迭代不同的内容,例如您提到的模型实例,但前提是相同的:
for path in ["foo", "bar"]:
urlpatterns += patterns("myapp.views", url(r"^%s/$" % path, "index", {}, name=path))
我将此代码放在我的url.py
中。这将导致以下内容映射到视图:
http://127.0.0.1:8000/foo/
http://127.0.0.1:8000/bar/
需要注意的一些事项:
index
的视图路径
参数命名URL;您可以选择不同的名称Django中有一个contrib应用程序已经做到了这一点,它被称为FlatPages。它通过注册中间件来工作。当一个页面被请求时,如果找不到它,它抛出一个404,该404被中间件捕获。中间件在数据库中查找页面,如果发现它为页面服务,则抛出404。是的,它可以工作,但需要几十个手动编码(例如,覆盖管理员保存处理程序,查看url是否被删除等),只是想知道是否有第三方应用程序/库可以帮助我:)谢谢!正是我想要的:)