2010-12-16 1 views
1

С ASP.NET MVC я могу просто добавить действие в представление, и оно будет автоматически работать. Кажется, что Django заставляет меня писать каждый маршрут в таблице urls.py - есть ли способ сделать его map, например «/ foo/bar», до foo.views.bar без явного упоминания об этом?Django autoroute

ответ

2

Я думаю, что причина Джанго заставляет вас писать все что-то вдоль этих линий: What's wrong with "magic"?

Во-вторых, карта вы предлагаете делает его трудно иметь дело с аргументами к функциям просмотра. Простейшим было бы обеспечить соблюдение конвенцией того, что все представления используют только аргументы GET и POST и в противном случае принимают некоторый стандартный набор аргументов (например, request, template_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)])) 
+0

Хм, я бы подумал, что это вписывается в СУХОЙ. Я попробую взломать. – Xodarap 2010-12-16 15:17:14