代码之家  ›  专栏  ›  技术社区  ›  Dicky Raambo

列表视图中的NoReverseMatch与表单

  •  0
  • Dicky Raambo  · 技术社区  · 6 年前

    我在将表单添加到我的 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 回复  |  直到 6 年前
        1
  •  0
  •   Will Keeling    6 年前

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

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