@kicherov_maxim

Как правильно сделать urls django для ajax запроса?

Добрый день. Есть js файл в котором выполняется асинхронный запрос, его планируется подключать к разным станицам.
function calculateFingerprint(){
	var xhr = new XMLHttpRequest();
	xhr.open('POST', 'fingerprinter/fingeprint', false);
	xhr.send(fingerprint);
	if (xhr.status != 200) {
	  console.log( xhr.status + ': ' + xhr.statusText );
	} else {
	  return xhr.responseText;
	}
};


есть url
главный
from django.contrib import admin
from django.urls import path, include
from fingerprinter import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('fingerprinter/', include('fingerprinter.urls')),
    path('', views.index, name='index'),
]


приложения fingerprinter
urlpatterns = [
    path('', views.index, name='index'),
    path('fingeprint', views.calculate_fingerprint, name='calculate_fingerprint'), #Сюда ajax хочу принимать
]


Как видно из кода, индексная страница доступна по двум адресам. / и /fingeprinter/
с первого адреса все хорошо, а со второго адреса я получаю ошибку:
django-fingerprint.js:247 POST http://localhost:8000/fingerprinter/fingerprinter/fingeprint 404 (Not Found)

Если в строку xhr.open('POST', 'fingerprinter/fingeprint', false); поменять на xhr.open('POST', 'ingeprint', false); то будет наоборот. Как сделать чтобы оно всегда работало?
  • Вопрос задан
  • 216 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Realmixer
Full stack Python (Django) web-developer
С ходу не скажу в чём проблема, но порекомендую батарейку https://pypi.org/project/django-extensions/ — она у меня в каждом проекте по умолчанию. Подключите её, и помимо всякой полезности у вас будет такая management-команда:
manage.py show_urls
Думаю всё сразу прояснится!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы