我在通过以下类型的路径定向url模式时遇到一些问题:Listview-> Listview2-> DetailView。我的网址格式遇到了麻烦。这是我正在使用的东西:
Data
--tank
--__init__.py
--cal.py
--level.py
此应用程序的主页是所有客户端的列表。单击客户端将填充一个新页面,其中显示该客户端的子客户端列表(cost_center)。
这是我的模板{%url%}调用的一部分,它调用上面列出的我的最终路径(/ slug / slug /):
app_name = 'ism'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('<slug:client_slug>/', views.CostCenterListView.as_view(), name='cost_center_list'),
path('<slug:client_slug>/<slug:cost_center_slug>/', views.cost_center_detail, name='cost_center_detail'),
]
将此内容及其随附的视图添加到一起会导致错误:
{% for cost_center in cost_centers %}
<ul>
<li><a href="{% url 'ism:cost_center_detail' cost_center.slug %}">{{ cost_center }}</a></li>
</ul>
{% endfor %}
您能确认我的问题必须处理我模板中的{%url%}而不记得URL路径中的第一个标记吗?我的错误消息似乎表明它正在尝试查找:
NoReverseMatch at /ism/cleint_slug/
代替:
.../cost_center_slug
我的假设是django会神奇地记住我的url模式的第一部分(即client_slug),但这似乎没有发生。我是否需要在视图中引入更多上下文变量,以允许在上面的模板中调用两个url变量(URL变量是否是正确的术语?听起来不正确)吗?
这是我的完整错误消息('cffd'是表示成本中心的一条子弹):
.../client_slug/cost_center_slug/
这是我的views.py。最初,我尝试使用DetailView及其get_object方法,但是除了我显示的基于函数的视图
之外,我无法使其正常工作Reverse for 'cost_center_detail' with arguments '('cffd',)' not found.
1 pattern(s) tried:
['ism/(?P<client_slug>[-a-zA-Z0-9_]+)/(?P<cost_center_slug>[-a-zA-Z0-9_]+)/$']
答案 0 :(得分:1)
我认为您输入的网址有误。应该是
{% url 'ism:cost_center_list' client_slug %}
或(您提供的参数不足以构造cost_center_detail
网址)
{% url 'ism:cost_center_detail' client_slug cost_center.slug %}