我正在尝试在 Django 中创建电话簿。
我的网址.py:
urlpatterns = [
url(r'^$', views.people_list, name='people_list'),
url(r'^(?P<id>\d)/$', views.person_detail, name='person_detail'),
]
视图.py:
def people_list(request):
people = Person.objects.all()
return render(request, 'phonebook/person/list.html', {'people': people})
def person_detail(request, person):
person = get_object_or_404(Person, id=person)
return render(request, 'phonebook/person/detail.html', {'person': person})
来自 models.py:
def get_absolute_url(self):
return reverse('phonebook:person_detail', args=[self.id])
和list.html:
{% block content %}
<h1>Phonebook</h1>
{% for person in people %}
<h2>
<a href="{{ person.get_absolute_url }}">
{{ person.name }} {{ person.last_name }}
</a>
</h2>
<p class="where">
{{ person.department }}, {{ person.facility }}
</p>
{{ person.phone1 }}<br>
{% endfor %}
{% endblock %}
索引看起来不错,但是当我尝试单击链接来获取 person_detail 站点时,我收到以下消息:
/phonebook/4/ 处的类型错误
person_detail() 收到意外的关键字参数“id”
请求方式:GET请求
网址:http://127.0.0.1:8000/phonebook/4/ http://127.0.0.1:8000/phonebook/4/Django 版本:1.9.6
异常类型:TypeError 异常值:person_detail() 得到一个
意外的关键字参数“id”
我在 urls.py 和 get_absolute_url 函数中有“id”参数。我不明白出了什么问题。