Страница не найдена (404) Метод запроса: GET URL запроса: http://127.0.0.1:4000/person/persondetails/3 - PullRequest
0 голосов
/ 04 октября 2018

Список людей отлично отображается в 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')), 
    ]
    
  • app 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>
    

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Привет, Бидхан, я изменил свой код вышеупомянутым способом.ошибка ниже.

Страница не найдена (404) Метод запроса: GET URL запроса: http://127.0.0.1:4000/persondetails/1/ Используя URLconf, определенный в djangotemplates.urls, 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.

0 голосов
/ 05 октября 2018

В вашем urls.py вы добавили persondetails/pk.., поэтому он будет перенаправлять вас на URL, например, для идентификатора 3,

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>
...