未找到“索引”的反向符号。 “索引”不是有效的视图函数或模式名称

时间:2019-08-26 17:06:49

标签: django url-mapping

我有一个简单的返回HttpResponseRedirect(reverse('index')),其中'index'是视图的名称。在运行服务器时,索引视图会正确显示,但在重定向时会显示此错误“ / vehicle_movement / checkinview处为NoReverseMatch”。

我在同一项目的django 1.1上工作,但后来切换到django 2.2。重定向在django 1.1网址下工作正常,但在django 2.2路径下却出现此错误。我所做的另一项更改是在1.1项目的早期版本中,索引视图url写在主url.py中,但现在它写在应用程序urls.py中。

这是views.py

def index(request):
    return render(request,'vehicle_movement/index.html',{})

def CheckinView(request):
    if request.method == "POST":
        checkin_form = CheckinForm(data = request.POST)
        if checkin_form.is_valid():
            checkin_form.save()
            return HttpResponseRedirect(reverse('index'))
        else:
            HttpResponse("Error")
    else:
        checkin_form = CheckinForm()
    return render(request,'vehicle_movement/checkin.html',{'checkin_form':checkin_form})

这是主要的urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(('vehicle_movement.urls','vehicle_movement'),namespace = 'vehicle_movement')),
]

这是应用urls.py

app_name = 'vehicle_movement'
urlpatterns = [
    path('', views.index, name='index'),
    path('index', views.index, name='index'),
]

这是结构

Warehouse
  -Warehouse
    -init.py
    -settings.py
    -urls.py
  -static
  -templates
  -vehicle_movement
    -urls.py
    -views.py

TEMPLATES_DIR

TEMPLATES_DIR = os.path.join(BASE_DIR,'templates')
``

1 个答案:

答案 0 :(得分:0)

您已为应用程序URL命名空间,因此在反转它们时需要使用该命名空间:

reverse('vehicle_movement:index')

但是您的应用程序URL中也有两个具有相同名称的路径,这将导致冲突,即使不是错误。删除其中之一。