我是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)存在
但这会导致Exception值
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'一起使用?
Thx
答案 0 :(得分:1)
{% url %}
模板标记和reverse
函数都可以使用您的网址格式的name
,而不是实际的网址!
因此,既然您已将模式定义为
urlpatterns = [ path('delivery/add'/, views.DeliveryCreate.as_view(),name='delivery-add'), ]
即,名称为'delivery-add'
,然后您必须按照经验将其传递给{% url %}
,即{% url 'delivery-add' %}
可以正常工作。
还请注意,您的模式(/
中的字符串末尾path('delivery/add'/...
肯定需要删除/
!>