Django 如何在 url 模式中定义 kwargs

Django how to define kwargs in a url pattern

url(r'^employee/create/(?P<employee_type>[\w-]+)$',
    staff_member_required(EmployeeCreateView.as_view()),
    name='employee-create'),

我正在使用上面的 url 配置来关注 url:

<a href="{% url "myapp_app:employee-create" employee_type=product_eng %}" class="button is-light is-outlined">Create Product Engineer</a>
<a href="{% url "myapp_app:employee-create" employee_type=product_dev %}" class="button is-light is-outlined">Create Product Developer</a>

但这给了我一个错误,说找不到匹配的反向 url。我该如何解决这个问题?

首先,您必须修复缺少斜线的 url 模式,正如@Evert 所指出的:

r'^employee/create/(?P<employee_type>[\w-]+)/$'

在您的模板中,您可以调用 url 模式,就像您所做的那样:

"{% url "myapp_app:employee-create" employee_type=product_eng %}"

这里重要的是 myapp_app 是命名空间,employee-create 是 url 模式的名称。 从这里我们看不到你是否指定了这个命名空间。

对于 employee_type=product_eng 部分来说,变量 product_eng 实际存在于模板中并具有有意义的值很重要。
您可以通过仅编写来简化它:

"{% url "myapp_app:employee-create" product_eng %}"