我已经编写了一个小型Web应用程序,当我要加载页面时,我会得到
找不到带有参数'('',)'的'form_view'的反向。尝试了1个模式:['form / view /(?P [0-9] +)$']
该应用程序运行正常。我不知道出了什么问题。我检查了拼写错误和命名错误。我什么都没找到我不知道url模式是否有问题。 在我用新条目更新数据库之后,该错误开始。
Models.py
class Form(models.Model):
name = models.CharField(max_length = 200)
publish_date = models.DateField()
book_length = models.IntegerField()
first_publish = models.BooleanField()
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('form_edit', kwargs={'pk': self.pk})
urls.py
urlpatterns = [
path('', views.FormList.as_view(), name='form_list'),
path('view/<int:pk>', views.FormView.as_view(), name='form_view'),
path('new', views.FormCreate.as_view(), name='form_new'),
path('edit/<int:pk>', views.FormUpdate.as_view(), name='form_update'),
path('delete/<int:pk>', views.FormDelete.as_view(), name='from_delete'),
]
views.py
class FormList(ListView):
model = Form
class FormView(DetailView):
model = Form
class FormCreate(CreateView):
model = Form
fields = ['name', 'publish_date', 'book_length', 'first_publish']
success_url = reverse_lazy('book_list')
class FormUpdate(UpdateView):
model = Form
fields = ['name', 'publish_date', 'book_length', 'first_publish']
success_url = reverse_lazy('book_list')
class FormDelete(DeleteView):
model = Form
success_url = reverse_lazy('book_list')
form_list.html-跟踪告诉我在<td><a href="{% url "form_view" form.id %}">view</a></td>
处出现错误的模板之一
<h1>Books</h1>
<table border="1">
<thead>
<tr>
<th>Name</th>
<th>Publish Date</th>
<th>Total Pages</th>
<th>First Publish Date</th>
<th>View</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
{% for book in object_list %}
<tr>
<td>{{ form.Name }}</td>
<td>{{ form.publish_date }}</td>
<td>{{ form.book_length }}</td>
<td>{{ form.first_publish }}</td>
<td><a href="{% url "form_view" form.id %}">view</a></td>
<td><a href="{% url "form_edit" form.id %}">edit</a></td>
<td><a href="{% url "form_delete" form.id %}">delete</a></td>
</tr>
{% endfor %}
</tbody>
</table>
<a href="{% url "form_new" %}">New</a>
跟踪:
In template C:\Users\smnha\OneDrive\Desktop\CRUD\form\templates\form\form_list.html, error at line 22
Reverse for 'form_view' with arguments '('',)' not found. 1 pattern(s) tried: ['form/view/(?P<pk>[0-9]+)$']
12 <th>Delete</th>
13 </tr>
14 </thead>
15 <tbody>
16 {% for book in object_list %}
17 <tr>
18 <td>{{ form.Name }}</td>
19 <td>{{ form.publish_date }}</td>
20 <td>{{ form.book_length }}</td>
21 <td>{{ form.first_publish }}</td>
22 <td><a href="{% url "form_view" form.id %}">view</a></td>
23 <td><a href="{% url "form_edit" form.id %}">edit</a></td>
24 <td><a href="{% url "form_delete" form.id %}">delete</a></td>
25 </tr>
26 {% endfor %}
27 </tbody>
28 </table>
29
30 <a href="{% url "form_new" %}">New</a>
答案 0 :(得分:2)
一个问题是您应该像这样使用book
而不是form
:
<tbody>
{% for book in object_list %}
<tr>
<td>{{ book.Name }}</td>
<td>{{ book.publish_date }}</td>
<td>{{ book.book_length }}</td>
<td>{{ book.first_publish }}</td>
<td><a href="{% url "form_view" book.id %}">view</a></td>
<td><a href="{% url "form_edit" book.id %}">edit</a></td>
<td><a href="{% url "form_delete" book.id %}">delete</a></td>
</tr>
{% endfor %}
</tbody>