我有一个简单的返回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')
``
答案 0 :(得分:0)
您已为应用程序URL命名空间,因此在反转它们时需要使用该命名空间:
reverse('vehicle_movement:index')
但是您的应用程序URL中也有两个具有相同名称的路径,这将导致冲突,即使不是错误。删除其中之一。