Раньше это работало до того, как Django 2.0 изменил шаблоны URL-адресов с «url» на «path»:
index.html
<!DOCTYPE html>
{% load static %}
<head>
<script type="text/javascript" src="{% static 'main/js/jquery-3.3.1.js' %}">
</head>
<body>
<div id='test'>
<p><button class="btn">Click Here!</button></p>
</div>
<script>
$('.btn').click(function(){
console.log('button is clicked!')
$.ajax({
url: 'main/all_json',
sucess: function(serverResponse){
console.log('success.serverResponse', serverResponse)
}
})
});
URL-адреса уровня приложения.py
urlpatterns = [
url(r'^all_json$',views.all_json, name="all_json")
]
Уровень проекта urls.py
app_name= "main"
urlpatterns = [
path('', include ('apps.main.urls', namespace='main')),
path('admin/', admin.site.urls),
]
views.py
def all_json(request):
return HttpResponse ('hello world!')
Но теперь Django 2.0 использует "путь" вместо регулярного выражения URLшаблон.Когда я использую путь:
app_name= "name"
urlpatterns = [
path('all_json',views.all_json, name="all_json"),
]
я получаю:
GET http://127.0.0.1:8000/main/all_json 404 (не найдено)
Я посмотрелв новой документации и в заметках о выпуске и есть несколько ответов SO, объясняющих, как его использовать SO post 1 & SO post 2 ,Это было полезно до того момента, когда я не могу передать URL-адрес из функции AJAX в «путь».
Я новичок в AJAX, и я привык использовать {% url main:all_json %}
в Django для своих действий.Но с AJAX я считаю, что не могу использовать эту запись.Это правильно?
И по некоторым причинам, у меня есть примеры, которые использовали url(r'^$')
urlpatterns до того, как работал Django 2.0, но теперь я получаю код 404 при использовании 'пути'.Большинство доступных вопросов и учебных пособий до Django 2.0 и используют url(r'^$')
urlpatterns.В заметках о выпуске и документации ничего не говорится о различиях в работе с AJAX.
У меня следующие вопросы:
Есть ли что-то еще, что мне нужно добавить в мой шаблон и / или urls.py, чтобы помочь ему найти URL-адреса (избавиться от 404)?