Django:页面没有正确重定向错误

Django: The page isn't redirecting properly error

我在浏览器中收到“页面重定向不正确”的提示。我正在尝试将一个应用程序移动到另一个应用程序的子文件夹中(因为从逻辑上讲它是该应用程序的特例)。

此代码导致循环,但我不明白为什么。

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/,但它正在调用位于 url /form/fill/614764fa0f135073bc6166ab560882da3a4ed674fcd7f05030583daa1e637230/ 的初始函数。区别在于前者包含了cat

为什么会循环播放?

编辑 根据要求 cdi_forms 中 url 的完整列表(我还包含了 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

添加了主urls

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')),
]

您的正则表达式开头缺少 ^。这意味着这个 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'),

您的 cdi_forms/urls.py 中的其他 url() 和主网址中的 url(r'interface/', ...) 也缺少 ^.