无法找出Django

时间:2019-07-27 10:53:55

标签: django

我已经编写了一个小型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>

1 个答案:

答案 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>
相关问题