当前位置: 代码迷 >> python >> 找不到页面(404)请求方法:GET请求URL:http://127.0.0.1:4000/person/persondetails/3
  详细解决方案

找不到页面(404)请求方法:GET请求URL:http://127.0.0.1:4000/person/persondetails/3

热度:108   发布时间:2023-07-16 09:57:18.0

在完美地显示一个人名单person.html ,但是当我点击persondetails锚标记,我得到一个错误。 请让我知道如何纠正此问题。

  • 项目urls.py

     from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^',include('example.urls')), ] 
  • 应用urls.py

     from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.HomePageView.as_view(), name='home'), url(r'^about/$', views.AboutPageView.as_view(), name='about'), url(r'^data/$', views.DataPageView.as_view(), name='data'), url(r'^person/$', views.PersonPageView.as_view(), name='person'), url(r'^persondetails/(?P<pk>[-\\w]+)/$', views.PersonDetailPageView.as_view(), name='persondetails'), ] 
  • views.py

     class PersonDetailPageView(DetailView): def details(self,pk): personDetail=get_object_or_404(Person, pk=self.kwargs.get("pk")) return redirect(request,'example/persondetails.html', {'personDetail':personDetail}) 
  • person.html

      <tbody> {% for persons in person %} <tr> <td><a href="persondetails/{{persons.pk}}"> {{persons.first_name}}</a></td> <td><a href="persondetails/{{persons.pk}}"> {{persons.first_name}}</a></td> <td>{{persons.last_name}}</td> <td>{{persons.email}}</td> </tr> {% endfor %} </tbody> 

在您的urls.py中,您添加了persondetails/pk..因此,它将把您重定向到该URL,例如ID为3的URL,

http://127.0.0.1:4000/persondetails/3/

您可以将其添加到..person / persondetail / pk ...

为了更好地安排,views.py,

class PersonDetailPageView(DetailView):
     model = Your_Model_Name
     template_name = 'your_template_name.html'

在html中,

<a href="{% url 'persondetails' person.id %}"> your template </a>

嗨,Bidhan,我更改了上面提到的方式的代码。 低于错误。

找不到页面(404)请求方法:GET请求URL: : :4000/persondetails/1/使用djangotemplates.urls中定义的URLconf,Django按以下顺序尝试了以下URL模式:

^admin/
^ ^$ [name='home']
^ ^about/$ [name='about']
^ ^data/$ [name='data']
^ ^person/$ [name='person']
^ ^person/persondetails/(?P<pk>[0-9]+)/$ [name='persondetails']

当前路径persondetails / 1 /与任何这些都不匹配。

您看到此错误是因为Django设置文件中的DEBUG = True。 将其更改为False,Django将显示标准的404页面。

  相关解决方案