我已经开发了自己的,但似乎这是一件足够好的事情,其他人可能首先想到它并且做得更好;)
目标是能够在您的 myapp/views.py 中编写
router = Router(prefix=r'^myapp/')
@router.route(url=r'my/url/here', name="my-great-view")
def myview(request):
return render_to_response("mytemplate.html", {})
然后在 urls.py
urlpatterns += myapp.views.router.get_patterns()
我还内置了其他一些很酷的装饰器(@jsonview 用于获取返回的字典并做出 json 响应,@use_template 用于获取返回的字典并将其作为上下文传递给定义的模板......)
似乎这种方式使所有内容都更加本地化并且可读。在查看视图函数时,您不必四处搜索以找到它所属的 url 或它的“名称”。
我看到了这个djangosnippet,但它比我想要的要神奇得多,而且看起来它并没有被普遍采用。
如果没有人制定标准解决方案,我应该清理我的并提交拉取请求给 contrib 吗?
- 这是我目前已经实现的:magic.py
编辑: 如果您想要同一视图的多个网址:
@router.route(url="my-first-url", kwargs={'foo':'bar'})
@router.route(url="my-second=url", kwargs={'foo':'baz'})
def my_view(...): ...
当然,这不一定是唯一的方法——普通的 urlpatterns 方法有一些关于它的好处,但是这两种方法并不相互排斥。