Шаблон URL Django для управления созданием и обновлением в одном представлении - ошибка NoReverseMatch
Я столкнулся с ошибкой 'NeReverseMatch', которую я не могу решить, хотя я совершенно убежден, что это, вероятно, глупая ошибка, что-то, что я пропустил... когда я воспроизвожу шаблон, который я реализовал ранее в том же приложении.
Контекст следующий: У меня есть одно и то же представление для создания и обновления объекта. Разница в том, что во втором случае у меня есть id. Таким образом, связанные урлы выглядят следующим образом (я поместил весь файл, чтобы не было несоответствия с другими урлами):
app_name = "polls"
urlpatterns = [
path("", views.index, name="index"),
path("get_chart_data/", views.get_chart_data, name="chart_data"),
path("set_proxy/", views.set_proxy, name="set_proxy"),
path("accept_proxy/", views.accept_proxy, name="accept_proxy"),
path("cancel_proxy/", views.cancel_proxy, name="cancel_proxy"),
path("sign_up/", views.new_user, name="sign_up"),
path("login/", views.login_user, name="login"),
path("logout/", views.logout_user, name="logout"),
path("<slug:comp_slug>/", views.company_home, name="company_home"),
path("<slug:comp_slug>/admin_users/", views.adm_users, name="adm_users"),
path("<slug:comp_slug>/admin_load_users/", views.adm_load_users, name="adm_load_users"),
path("<slug:comp_slug>/admin_profile/", views.adm_user_profile, name="adm_create_user"),
path("<slug:comp_slug>/admin_profile/<int:usr_id>", views.adm_user_profile, name="adm_user_profile"),
path("<slug:comp_slug>/change_password/", views.change_password, name="change_password"),
path("<slug:comp_slug>/admin_delete_user/<int:usr_id>", views.adm_delete_user, name="adm_delete_user"),
path("<slug:comp_slug>/admin_events/", views.adm_events, name="adm_events"),
path("<slug:comp_slug>/admin_create_event/", views.adm_event_detail, name="adm_create_event"),
path("<slug:comp_slug>/admin_update_event/<int:evt_id>/", views.adm_event_detail, name="adm_event_detail"),
path("<slug:comp_slug>/admin_delete_event/<int:evt_id>", views.adm_delete_event, name="adm_delete_event"),
path("<slug:comp_slug>/admin_groups/", views.adm_groups, name="adm_groups"),
# ===== THE 2 FOLLOWING LINES ARE THE ISSUE =====
path("<slug:comp_slug>/admin_group_detail/", views.adm_group_detail, name="adm_create_group"),
path("<slug:comp_slug>/admin_group_detail/<int:grp_id>/", views.adm_group_detail, name="adm_group_detail"),
path("<slug:comp_slug>/admin_delete_group/<int:grp_id>", views.adm_delete_group, name="adm_delete_group"),
path("<slug:comp_slug>/admin_options/", views.adm_options, name="adm_options"),
path("<slug:comp_slug>/<slug:event_slug>/", views.event, name="event"),
path("<slug:comp_slug>/<slug:event_slug>/<int:question_no>", views.question, name="question"),
path("<slug:comp_slug>/<slug:event_slug>/<int:question_no>/vote", views.vote, name="vote"),
path("<slug:comp_slug>/<slug:event_slug>/results", views.results, name="results"),
]
Шаблон такой же для управления пользователями (adm_user_profile
представление) без проблем.
Вот представление:
def adm_group_detail(request, comp_slug, grp_id=0):
company = Company.get_company(comp_slug)
if grp_id > 0:
current_group = EventGroup.objects.get(id=grp_id)
group_form = GroupDetail(request.POST or None, instance=current_group)
else:
group_form = GroupDetail(request.POST or None)
group_form.fields['all_users'].queryset = UserComp.objects.\
filter(company=company).\
order_by('user__last_name', 'user__first_name')
if request.method == 'POST':
# Some dedicated code I could add if necessary, the problem is for GET request
return render(request, "polls/adm_group_detail.html", locals())
Представление вызывается благодаря кнопке, вот соответствующий HTML код:
<div class="text-center">
<!-- Create button -->
<a type="button" class="create-grp btn btn-primary" href="{% url 'polls:adm_create_group' company.comp_slug %}">Nouveau groupe</a>
</div>
Сообщение об ошибке:
Reverse for 'adm_group_detail' with arguments '('impuls-ions',)' not found. 1 pattern(s) tried: ['(?P<comp_slug>[-a-zA-Z0-9_]+)/admin_group_detail/(?P<grp_id>[0-9]+)/$']
Следы указывают на утверждение return render()
, и я не вижу проблем с локальными переменными:
Variable Value
________________________________
comp_slug 'impuls-ions'
company <Company: Impuls'Ions>
group_form <GroupDetail bound=False, valid=Unknown, fields=(group_name;weight;users;all_users;group_list)>
grp_id 0
request <WSGIRequest: GET '/impuls-ions/admin_group_detail/'>