Может ли Django сделать вывод имени по URL? - PullRequest
1 голос
/ 02 марта 2012

У меня есть следующие URL-адреса

url(r'^signup/','social.views.signup'),
url(r'^submit_signup/','social.views.submit_signup'),
url(r'^signup_complete/','social.views.signup_complete'),

Могу ли я создать URL-адрес, который будет выбирать представление на основе URL-адреса?Например:

url(r'*/', 'social.views.*')

, чтобы запрос к / подписке перенаправлялся на «social.views.signup»

Ответы [ 2 ]

2 голосов
/ 02 марта 2012

как-то так

def test(*args,**kwargs):
    view_name = kwargs.pop('view')
    view = getattr(social.views,view_name)
    return view(*args, **kwargs)

urlpatterns = patterns('',
    url(r'^test/(?P<view>.*)$', test),
    ...
)

или вот так

VIEWS_LIST = ['signup','submit_signup','signup_complete']
urlpatterns = patterns('social.views',
    *[url('%s/' % view,view) for view in VIEWS_LIST]
)
0 голосов
/ 02 марта 2012

Если вы хотите, чтобы процесс регистрации состоял из нескольких этапов, вы можете использовать мастер форм Django.Таким образом, вам не нужно менять URL для каждого шага регистрации.URL будет выглядеть следующим образом:

url(r'^signup/$', SignupWizard([SignupForm_1, SignupForm_2, SignupFormComplete]) ),

Проверьте мастер форм документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...