人员列表在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>
答案 0 :(得分:0)
在您的urls.py中,您添加了persondetails/pk..
,因此它将把您重定向到该网址,例如对于ID 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>
答案 1 :(得分:0)
您好Bidhan我更改了上述代码的方式。低于错误。
找不到页面(404) 请求方法:GET 要求网址:http://127.0.0.1:4000/persondetails/1/ Django使用djangotemplates.urls中定义的URLconf,尝试了这些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页面。