Я пытаюсь создать конечную точку API, которая принимает аргумент cc
.
Представление для этой конечной точки в модуле api
:
def cc_details(request, cc):
return JsonResponse({'cc': cc})
URL-адрес:
urlpatterns = [
path('api/cc_details/<int:cc>', api.cc_details, name='cc_details'),
]
Я вызываю URL из шаблона следующим образом:
async function get_cc_details(cc) {
let url = new URL("{% absurl 'core:analyzer:cc_details' %}" + "/" + cc)
const response = await fetch(url)
const json = await response.json()
console.log(json)
}
Пользовательский absurl
для возврата абсолютного URL:
from django import template
from django.shortcuts import reverse
register = template.Library()
@register.simple_tag(takes_context=True)
def absurl(context, view_name):
request = context['request']
return request.build_absolute_uri(reverse(view_name))
Однако, когда я пытаюсь перейти на страницу индекса моего приложения, я получаю следующую ошибку:
django.urls.exceptions.NoReverseMatch: Обратное для 'cc_details' без аргументов, не найденных.Попробован 1 шаблон (ов): ['api / cc_details / (? P [0-9] +) $']
Это будет работать нормально, если я просто вручную, например, перейду к http://127.0.0.1:8000/api/cc_details/123
.
Я предполагаю, что я неправильно предоставляю аргумент для URL в функции JS.Как я могу это исправить?