如果有一种无痛的运行时urlconf修改方式?例如基于数据库记录?
Bruteforce soluttion:
r('^(.*)/', handmade_router_function)
对我来说太残酷了:))
提前致谢!
UPD: 我知道我可以直接从我的代码修改urlpatterns,但它需要大量的手动编码(自定义管理员保存操作,删除处理程序等)。我想知道是否有一个可以使用的应用程序/库:)
答案 0 :(得分:2)
Django中有一个贡献应用程序已经这样做,它被称为FlatPages。它通过注册中间件来工作。当请求页面时,如果找不到它,则抛出404被中间件捕获。中间件在数据库中查找页面,如果发现它为页面提供服务,如果没有,则会抛出404。
答案 1 :(得分:0)
您是否尝试在运行时修改“urlpatterns”变量?
答案 2 :(得分:0)
这样的事情有效。您将迭代不同的东西,例如您提到的模型实例,但前提是相同的:
for path in ["foo", "bar"]:
urlpatterns += patterns("myapp.views", url(r"^%s/$" % path, "index", {}, name=path))
我将此代码放在我的urls.py
中。这会导致以下内容映射到视图:
http://127.0.0.1:8000/foo/
http://127.0.0.1:8000/bar/
有些注意事项:
index
的视图。path
参数之后命名URL;你可以选择以不同的方式命名。