首页 > 解决方案 > 无法通过参数化 url 访问 Django

问题描述

你好 StackOverflow 社区,

我目前正在学习如何将库 Django 与 Python 结合使用。但是,我遇到了一些奇怪的问题。我的情况如下。我有一个名为“animals”的项目,它是 Django 应用程序的基础。我的应用程序称为“民意调查”。然后我定义了以下视图。

民意调查/views.py

from django.shortcuts import render
from django.http import HttpResponse

def animals(request, animal_id):
    return HttpResponse("%s" % animal_id)

def index(request):
    return HttpResponse('Hello world')

到目前为止,一切都很好。不幸的是,我不能对 urlpatterns 说同样的话。

民意调查/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.index,name='index'),
    # Redirects to localhost:8000/polls/<animal_id>
    path('<int:animal_id>/',views.animals,name='animals')    
]

每当我想导航到 url "localhost:8000/polls/10/" 时,Django 都会提醒我这样一个事实,即应用程序不接受该 url,并且在我的浏览器中抛出了 404 错误。我在这里错过了什么吗?

更新

我设法通过修复一个相当微不足道的错误来解决这个问题。虽然polls/urls.py 没问题,但问题出在animal/urls.py文件中。这个文件看起来像这样:

动物/urls.py

from django.conf.urls import url
from django.contrib import admin
from django.urls import include,path

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    path('polls',include('polls.urls')),
]

可以看到,“polls”路径没有以“/”符号结束。这向 Django 表明我想要的路由是localhost:8000/polls,其中是我添加到 url 的任何整数。但是,您必须在末尾添加斜线。否则 Django 将无法按预期工作。

标签: pythondjangourlbrowserhttp-status-code-404

解决方案


推荐阅读