ListView的NoReverseMatch,表单为

时间:2018-05-05 12:23:44

标签: django django-forms django-templates

在我的ListView课程中添加表单后,我遇到了错误。

这是我的models.py

class Holiday(models.Model):
    name = models.CharField(max_length=100)
    date_from = models.DateField()
    date_to = models.DateField(null=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("app:holiday_list"

这是我的views.py

class HolidayListView(ListView):
    context_object_name = 'holidays'
    model = models.Holiday

class HolidayCreateView(CreateView):
    fields = ('name', 'date_from', 'date_to')
    model = models.Holiday

和我的holiday_list.html

....

<form method="post" action="{% url 'holiday-create' %}">
      {% csrf_token %}
      <input type="text" name="name" maxlength="100" required="" id="id_name">
      <input type="text" name="date_from" required="" id="id_date_from">
      <input type="text" name="date_to" required="" id="id_date_to">

      <input type="submit" class="btn btn-primary" value="Submit">

</form>
....
some code to list all data

和我的urls.py

url(r'^/$',views.HolidayListView.as_view(), name='holiday_list'),
url(r'^create/$',views.HolidayCreateView.as_view(),name='holiday-create'),

我收到了一个错误:

NoReverseMatch at /app/holiday/
Reverse for 'holiday-create' not found. 'holiday-create' is not a valid view function or pattern name.
我错过了什么。

1 个答案:

答案 0 :(得分:0)

从您的Holiday模型判断,您使用的是app的命名空间。模板中的URL应指定。

<form method="post" action="{% url 'app:holiday-create' %}">