【问题标题】:Calling a class-based-view from template从模板调用基于类的视图
【发布时间】:2018-07-20 10:33:03
【问题描述】:

我是 Django/Python 新手,正在使用 Django 2。 在 urls.py 我定义:

> urlpatterns = [    path('delivery/add'/,views.DeliveryCreate.as_view(),name='delivery-add'), ]

在模板 (app/template/app/main.html) 中调用是:

  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
      Deliveries
    </a>
    <div class="dropdown-menu" aria-labelledby="navbarDropdown">           
        <a class="dropdown-item" href="{% url 'delivery/add'  %}">Create Delivery ...</a>
    </div>
  </li> 

模板(app/template/app/delivery_form.html)存在

但这会导致异常值

Reverse for 'delivery/add' not found. 'delivery/add' is not a valid view function or pattern name.

使用path('delivery-add'/...) 而不是path('delivery/add'/...) 它适用于href="{% url 'delivery-add'...%}

为什么它不能与 '/add' 一起使用?

谢谢

【问题讨论】:

    标签: django-templates django-urls


    【解决方案1】:

    {% url %} 模板标签和 reverse 函数都适用于您的 url 模式的 name,而不是实际的 url!

    因此,既然您已将模式定义为

    urlpatterns = [ path('delivery/add'/, views.DeliveryCreate.as_view(),name='delivery-add'), ]
    

    即名称为'delivery-add',然后您必须将其传递给{% url %},正如您已经体验过的那样,即{% url 'delivery-add' %} 将起作用。

    另外请注意,您的模式 (path('delivery/add'/...) 中的字符串有一个尾随 / outside/ 肯定需要删除!

    【讨论】:

      猜你喜欢
      • 2013-02-04
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      相关资源
      最近更新 更多