Django:运行时url配置

Django:运行时url配置,django,url-routing,Django,Url Routing,是否有一种无痛的方式来修改运行时urlconf?e、 g.基于数据库记录 强力溶液: r('^(.*)/', handmade_router_function) 对我来说太残忍了:) 提前谢谢 UPD: 我知道我可以直接从代码中修改urlpatterns,但这需要大量手工编码(自定义管理员保存操作、删除处理程序等)。我想弄清楚是否有现成的应用程序/库:)您是否尝试过在运行时修改“urlpatterns”变量?类似的方法很有效。您将迭代不同的内容,例如您提到的模型实例,但前提是相同的: for

是否有一种无痛的方式来修改运行时urlconf?e、 g.基于数据库记录

强力溶液:

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是否被删除等),只是想知道是否有第三方应用程序/库可以帮助我:)谢谢!正是我想要的:)