Django autoroute

时间:2010-12-16 00:54:03

标签: django model-view-controller django-urls

使用ASP.NET MVC,我可以向视图添加一个动作,它将自动运行。 Django似乎让我在urls.py表中编写每个路径 - 有没有办法让它映射,例如“/ foo / bar”到foo.views.bar而没有我明确说出来?

1 个答案:

答案 0 :(得分:2)

我认为django让你写一切的原因是这样的:What's wrong with "magic"?

其次,您建议的地图使得处理视图函数的参数变得困难。最简单的方法是按惯例强制执行所有视图仅使用GETPOST参数,否则采用一些标准参数集(例如requesttemplate_name)。

要实现所需的地图,您可以迭代视图模块并生成模式对象。请注意,这是一个非常丑陋的黑客,并在很大程度上击败了网址映射器的目的。在urls.py

from django.conf.urls.defaults import *

import myapp.views

urlpatterns = patterns('myapp.views',                                                                                                                                   
    *map(lambda x: url(r'^myapp/%s/$' % x, x, name='myapp_%s' % x),
         [k for k,v in myapp.views.__dict__.items() if callable(v)]))