我收到一个错误NoReverseMatch at /animal_types/10/
异常值为:Reverse for 'animal' with arguments '('',)' not found. 1 pattern(s) tried: ['animal\\/(?P<animal_id>[0-9]+)\\/$']
这是我对动物的看法代码:
@login_required
def animal(request, animal_id):
"""shows a single animal and the schedule associated"""
animal = Animal.objects.get(id=animal_id)
schedule = animal.schedule_set.order_by('-date_added')
context = {'animal':animal, 'schedule':schedule}
return render(request, 'zoo_animal_feeders/animal.html', context)
感谢您的帮助。让我知道是否需要提供更多信息。
这是我的主要网址:
urlpatterns = [
path('admin/', admin.site.urls),
path('users/', include('users.urls')),
path('', include('zoo_animal_feeders.urls')),
]
这是它尝试执行的特定于应用的网址:
app_name = 'zoo_animal_feeders'
urlpatterns = [
#This is for the home page
path('', views.index, name='index'),
#Show animal types
path('animal_types/', views.animal_types, name='animal_types'),
#Page that will access a certain category of animals
path('animal_types/<int:animal_type_id>/', views.animal_type, name='animal_type'),
#Page for accessing an animal (and its schedule)
path('animal/<int:animal_id>/', views.animal, name='animal'),
#Page for adding a new animal type
path('new_animal_type/', views.new_animal_type, name='new_animal_type'),
#Page for adding a new animal
path('new_animal/<int:animal_type_id>/', views.new_animal, name='new_animal'),
#page for adding a new schedule
path('new_schedule/<int:animal_id>/', views.new_schedule, name='new_schedule'),
#page for editing an animal
path('edit_animal/<int:animal_id>/', views.edit_animal, name='edit_animal'),
#page for editing a schedule
path('edit_schedule/<int:schedule_id>/', views.edit_schedule, name='edit_schedule'),
]
/ animal_types /的模板:
{% extends 'zoo_animal_feeders/base.html' %}
{% block header %}
<h2>{{ animal_type }}</h2>
{% endblock header %}
{% block content %}
<p><a href="{% url 'zoo_animal_feeders:new_animal' animal_type.id %}">add new animal</a></p>
{% for animal in animals %}
<div class="panel panel-default">
<div class="panel-heading">
<h3>
{{ animal.name }}
<small>
<a href="{% url 'zoo_animal_feeders:animal' schedule.id %}">see schedule</a>
<a href="{% url 'zoo_animal_feeders:edit_animal' animal.id %}">edit animal</a>
</small>
</h3>
</div>
<div class="panel-body">
{{ animal.text|linebreaks }}
</div>
</div>
{% empty %}
<li>There are no animals for this animal type yet.</li>
{% endfor %}
{% endblock content %}
由于代码太多(回溯时间很长),因此不允许我添加回溯。
答案 0 :(得分:0)
问题是这样的,<a href="{% url 'zoo_animal_feeders:animal' schedule.id %}">see schedule</a>
我指的是schedule.id
,它需要指向animal.id
这是正确的代码:
<a href="{% url 'zoo_animal_feeders:animal' animal.id %}">see schedule</a>
答案 1 :(得分:0)
您应该在网址中指定特定的变量名称“ animal_id”:
<a href="{% url 'zoo_animal_feeders:animal' animal_id=schedule.id %}">see schedule</a>
<a href="{% url 'zoo_animal_feeders:edit_animal' animal_id=animal.id %}">edit animal</a>
祝你好运。