Джанго авторуте - PullRequest
       13

Джанго авторуте

1 голос
/ 16 декабря 2010

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

1 Ответ

2 голосов
/ 16 декабря 2010

Я думаю, что причина, по которой django заставляет вас писать все, заключается в следующем: Что не так с "магией"?

Во-вторых, карта, которую вы предлагаете, мешает работатьаргументы для представления функций.Самым простым было бы обеспечить по соглашению, что все представления используют только аргументы GET и POST и в противном случае принимают некоторый стандартный набор аргументов (например, request, template_name).

Для реализации этой картыЕсли хотите, вы можете перебрать свой модуль views и сгенерировать объект шаблонов.Имейте в виду, это действительно уродливый хакер и в значительной степени побеждает цель отображения 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)]))
...