2015-04-27 3 views
2

я борюсь с этой проблемой в приложении Django: Мой главный файл приложения URLs имеет эти две строки:Дублированный шаблон, другое имя в URL включен Джанго

url(r'^root-pattern-1/', include('loan.urls')), 
url(r'^root-pattern-2/', include('loan.urls')), 

И в моих loan.urls у меня есть следующие две записи:

url(r'^search/$', Search.as_view(), 
      name='personal-loan-result', kwargs={'loantype': LOAN_TYPE_PERSONAL}), 
url(r'^search/$', Search.as_view(loantype=LOAN_TYPE_CREDIT), 
      name='creditcard-loan-result', kwargs={'loantype': LOAN_TYPE_CREDIT}), 

проблема заключается в том, что, когда я называю reverse('creditcard-loan-result') URL, кажется, хорошо, но это вызов URL с именем «личного кредита результат», то есть первая запись. Я читал много и видел в других вопросах здесь, что варианты включают мой файл loan.urls с пустым шаблоном или изменение порядка записей URL. Есть ли другой вариант, который мне не хватает? изменение порядка не будет работать в этом конкретном случае, и мне не нравится идея включения URL-адресов с пустым шаблоном.

ответ

1

Непонятно, почему вы включаете loan.urls дважды, поэтому извините, если я неправильно понял ваш вопрос.

url(r'^search/$', Search.as_view(), 
     name='personal-loan-result', kwargs={'loantype': LOAN_TYPE_PERSONAL}), 
url(r'^search/$', Search.as_view(loantype=LOAN_TYPE_CREDIT), 
     name='creditcard-loan-result', kwargs={'loantype': LOAN_TYPE_CREDIT}), 

Они оба для того же URL, /search/. Неважно, звоните ли вы reverse('personal-loan-result') или reverse('creditcard-loan-result'), URL-адрес, отображаемый в браузере, это просто /search/, а Django всегда будет использовать первый шаблон URL-адреса, который соответствует.

Если вы хотите направить результаты на второй шаблон, вам понадобятся два разных регулярных выражения, например, вы можете использовать ^search/personal/$ и ^search/credit/$.

+0

Эти два варианта есть, потому что это единственные два случая, когда мы хотим, чтобы были включены URL-адреса кредитного приложения, я знаю, что решение может включать в себя loan.urls всегда (с использованием и пустым шаблоном) URL-адрес, отображаемый в браузере, будет be '/ root-pattern-1/search /' или '/ root-pattern-2/search /' –

 Смежные вопросы

  • Нет связанных вопросов^_^