Django: Как я создаю универсальную маршрутизацию URL к представлениям?

Степень переменной - от того, где она начинается, до того места, где она использовалась в последний раз.

Компилятор может использовать разные слоты памяти (или регистра) для j, потому что легче перечислить каждую новую переменную в новом месте.

Компилятор может использовать тот же слот памяти (или регистр) для j, потому что он может писать более быстрый код.

7
задан swilliams 3 October 2008 в 18:43
поделиться

3 ответа

mods = ('Project','Links','Profile','Contact')

urlpatterns = patterns('',
   *(('^%s/$'%n, 'mysite.app.views.%s'%n.lower()) for n in mods)
)
5
ответ дан 6 December 2019 в 14:11
поделиться

Если у Вас нет действительно огромного количества представлений, записывание их явно не слишком плохо с точки зрения стиля.

Можно сократить пример, тем не менее, при помощи аргумента префикса patterns функция:

urlpatterns = patterns('mysite.app.views',
    (r'^Project/$', 'project'),
    (r'^Links/$', 'links'),
    (r'^Profile/$', 'profile'),
    (r'^Contact/$', 'contact'),
)
5
ответ дан 6 December 2019 в 14:11
поделиться

Вы смогли использовать специальную функцию представления вдоль этих строк:

def router(request, function, module):
    m =__import__(module, globals(), locals(), [function.lower()])
    try:
        return m.__dict__[function.lower()](request)
    except KeyError:
        raise Http404()

и затем urlconf как это:

(r'^(?P<function>.+)/$', router, {"module": 'mysite.app.views'}),

Этот код не тестируется, но общее представление должно работать, даже при том, что необходимо помнить:

Явный лучше, чем неявный.

5
ответ дан 6 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: