【发布时间】:2019-07-17 16:41:05
【问题描述】:
这曾经在 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)
}
})
});
APP 级别 urls.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(未找到)
我查看了new documentation 和release notes 并且有一些SO 答案解释了如何使用它SO post 1 和SO post 2。到目前为止,这一直很有用,我无法将 url 从 AJAX 函数传递到“路径”。
我是 AJAX 新手,我习惯于在 Django 中使用 {% url main:all_json %} 来执行我的操作。但是对于 AJAX,我相信我不能使用这种表示法。对吗?
由于某种原因,我在 Django 2.0 之前使用 url(r'^$') urlpatterns 的示例有效,但现在使用“路径”时得到代码 404。大多数可用的问题和教程都是 Django 2.0 之前的版本,并使用 url(r'^$') urlpatterns。发行说明和文档没有提及任何关于使用 AJAX 的差异。
我的问题如下:
我需要在我的模板和/或 urls.py 中添加其他内容来帮助它找到 url(摆脱 404)吗?
【问题讨论】:
-
app_name="main" 转到应用级别 urls.py 而不是项目级别 urls.py