В Django, вы можете автоматически сопоставлять URL-адреса для просмотра методов? - PullRequest
8 голосов
/ 24 марта 2011

При таком виде:

# my_app/views.py
def index(request):
    ...
def list(request):
    ...
def about(request):
    ...

Вместо явного объявления URL-адресов в urls.py для каждого метода в представлении:

# urls.py
url(r'^index$', 'my_app.views.index'),
url(r'^list$', 'my_app.views.list'),
url(r'^about$', 'my_app.views.about'),
...

Можно ли просто дать диспетчеру URL представление (my_apps.views) и обработать все методы представления?

1 Ответ

1 голос
/ 24 марта 2011

Полагаю, у вас может быть одно представление, которое фиксирует регулярное выражение URL,

r'^(?P<viewtype>index|list|about)/$', 'myview'

с видом, который обрабатывает захваченный параметр.

def myview(request, viewtype):
    if viewtype == 'index':
          return http.HttpResponse("I'm the index view")
    elif viewtype == 'list':
          return http.HttpResponse("I'm the list view')

Но я бы действительно рекомендовал разделить логику вашего представления для ясности Намного проще следовать 3 различным представлениям с их конкретными функциями, чем 3 операторам if / then.

...