【发布时间】:2010-12-16 00:54:02
【问题描述】:
使用 ASP.NET MVC,我只需向视图添加一个动作,它就会自动运行。 Django 似乎让我在 urls.py 表中写下每条路线 - 有没有办法让它映射,例如“/foo/bar”到foo.views.bar,而我没有明确这么说?
【问题讨论】:
标签: django model-view-controller django-urls
使用 ASP.NET MVC,我只需向视图添加一个动作,它就会自动运行。 Django 似乎让我在 urls.py 表中写下每条路线 - 有没有办法让它映射,例如“/foo/bar”到foo.views.bar,而我没有明确这么说?
【问题讨论】:
标签: django model-view-controller django-urls
我认为 django 让你编写所有内容的原因是这样的:What's wrong with "magic"?
其次,您建议的地图使处理视图函数的参数变得困难。最简单的方法是按照惯例强制所有视图只使用GET 和POST 参数,否则采用一些标准参数集(例如request、template_name)。
要实现您想要的这个地图,您可以遍历您的视图模块并生成模式对象。请注意,这是一个非常丑陋的 hack,很大程度上违背了 url 映射器的目的。在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)]))
【讨论】: