Django: страница неправильно перенаправляет ошибку - PullRequest
0 голосов
/ 13 апреля 2020

В моем браузере появляется сообщение "страница не перенаправляется должным образом". Я пытаюсь переместить приложение в подпапку другого приложения (потому что по логике это особый случай этого приложения).

Этот код вызывает l oop, но я делаю не понимаю, почему.

if administration_instance.study.instrument.form in ['CAT'] : 
    return redirect('cat_forms:administer_cat_form', hash_id=hash_id)

У моего основного urls.py есть эта строка:

url(r'^form/', include('cdi_forms.urls')),

У моего cdi_forms.urls есть эта строка:

url(r'fill/(?P<hash_id>[0-9a-f]{64})/$', views.administer_cdi_form, name='administer_cdi_form'),  #I've included this line because it is the url being called in the loop        
path('cat/', include(('cdi_forms.cat_forms.urls', 'cat_forms'), namespace="cat_forms")),

И мой cdi_forms.cat_forms.urls имеет

path('fill/<hash_id>/', views.AdministerAdministraionView.as_view(), name='administer_cat_form'),

Это генерирует URL /form/cat/fill/614764fa0f135073bc6166ab560882da3a4ed674fcd7f05030583daa1e637230/, который является правильным, но он вызывает начальную функцию, которая находится по адресу /form/fill/614764fa0f135073bc6166ab560882da3a4ed674fcd7f05030583daa1e637230/. Разница заключается в включении cat в первом.

Почему это зацикливание?

EDIT В соответствии с запросом полный список URL в cdi_forms (и я ' мы также включили полный список для cat_forms).

cdi_forms.urls.py

urlpatterns = [
        url(r'demo/English_WS$', views.cdi_form, name='cdi_form'),
        url(r'background/(?P<pk>[0-9]+)/$', views.BackgroundInfoView.as_view(), name='background-info'),
        url(r'background-create/(?P<study_id>[0-9]+)/bypass/$', views.CreateBackgroundInfoView.as_view(), {'bypass':True}, name='create-new-background-info'),
        url(r'background-create/(?P<study_id>[0-9]+)/$', views.CreateBackgroundInfoView.as_view(), {'bypass':None}, name='create-new-background-info'),
        url(r'background-backpage/(?P<pk>[0-9]+)/$', views.BackpageBackgroundInfoView.as_view(), name='backpage-background-info'),
        url(r'fill/(?P<hash_id>[0-9a-f]{64})/$', views.administer_cdi_form, name='administer_cdi_form'),
        url(r'save_answer/$', views.save_answer, name='save_answer'),
        url(r'group/(?P<username>[^/]+)/(?P<study_group>[a-zA-Z0-9-_]+)/$', views.find_paired_studies, name='find_paired_studies'),
        url(r'contact/(?P<hash_id>[0-9a-f]{64})/$', views.contact, name='contact'),
        url(r'update_administration_data_item/$', views.update_administration_data_item, name="update-administration-data-item"),
        url(r'administraion-pdf-view/(?P<pk>[0-9]+)/$', views.PDFAdministrationDetailView.as_view(), name="administration-pdf-view"),
        url(r'administraion-view/(?P<pk>[0-9]+)/$', views.AdministrationDetailView.as_view(), name="administration-view"),
        path('cat/', include(('cdi_forms.cat_forms.urls', 'cat_forms'), namespace="cat_forms")),
]

cdi_forms.cat_forms.urls.py

urlpatterns = [
    path('background/<int:pk>/', views.CATBackgroundInfoView.as_view(), name='background-info'),
    path('background-create/<int:study_id>/bypass/', views.CreateBackgroundInfoView.as_view(), {'bypass':True}, name='create-new-background-info'),
    path('background-create/<int:study_id>/', views.CreateBackgroundInfoView.as_view(), {'bypass':None}, name='create-new-background-info'),
    path('background-backpage/<int:pk>/', views.CATBackpageBackgroundInfoView.as_view(), name='backpage-background-info'),
    path('fill/<hash_id>/', views.AdministerAdministraionView.as_view(), name='administer_cat_form'),
    ]

РЕДАКТИРОВАТЬ 2

Добавлены основные URL

urlpatterns = [
    url(r'^$', TemplateView.as_view(template_name="researcher_UI/home.html")),
    url(r'^favicon\.ico', RedirectView.as_view(url='/static/images/favicon.ico', permanent=True)),
    url(r'^robots\.txt', RedirectView.as_view(url='/static/robots.txt', permanent=True)),
    url(r'^wcadmin/', admin.site.urls),
    url(r'^form/', include('cdi_forms.urls')),
    #path('cat/', include(('cdi_forms.cat_forms.urls', 'cat_forms'), namespace="cat_forms")),
    url(r'^accounts/login/$', auth_views.LoginView.as_view(), {'template_name': 'registration/login.html'}),
    url(r'^accounts/logout/$', auth_views.LogoutView.as_view(), {'next_page': 'interface/'}),
    url(r'^accounts/profile/$', RedirectView.as_view(url='/interface/', permanent=False), name='interface'),
    url(r'interface/', include('researcher_UI.urls')),
    url(r'^registration/', include('registration.urls')),
    url(r'^lockout/$', TemplateView.as_view(template_name="registration/lockout.html")),
    url(r'^health/?', include('health_check.urls')),
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
]

1 Ответ

2 голосов
/ 13 апреля 2020

Вам не хватает ^ в начале вашего регулярного выражения. Это означает, что этот URL

 url(r'fill/(?P<hash_id>[0-9a-f]{64})/$', views.administer_cdi_form, name='administer_cdi_form'),

соответствует fill/614764fa0f135073bc6166ab560882da3a4ed674fcd7f05030583daa1e637230, но также соответствует cat/fill/614764fa0f135073bc6166ab560882da3a4ed674fcd7f05030583daa1e637230.

Измените его на

 url(r'^fill/(?P<hash_id>[0-9a-f]{64})/$', views.administer_cdi_form, name='administer_cdi_form'),

Остальные url() s в ваших cdi_forms/urls.py и url(r'interface/', ...) в основных URL также отсутствуют ^.

...