这在Django2.0将url模式从“url”更改为“path”之前就已经起作用了:
索引文件
<!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")
]
项目级URL.py
app_name= "main"
urlpatterns = [
path('', include ('apps.main.urls', namespace='main')),
path('admin/', admin.site.urls),
]
VIEW
def all_json(request):
return HttpResponse ('hello world!')
但是现在,django 2.0使用“path”而不是url regex模式。当我使用路径时:
app_name= "name"
urlpatterns = [
path('all_json',views.all_json, name="all_json"),
]
我得到:
得到
http://127.0.0.1:8000/main/all_json
404(未找到)
我看了看
new documentation
和
release notes
还有一些答案可以解释如何使用它
SO post 1
和;
SO post 2
. 到目前为止,这非常有用,因为我无法将URL从Ajax函数传递到“路径”。
我是Ajax的新手,我习惯于使用
{% url main:all_json %}
为了我的行为。但是对于Ajax,我相信我不能使用这个符号。对吗?
出于某种原因,我所用的例子
url(r'^$')
Django2.0之前的urlpatterns工作正常,但现在我在使用“path”时得到一个代码404。大多数可用的问题和教程都是Django 2.0之前的版本并使用
URL(R′^ $)
URL模式。发行说明和文档没有提到使用Ajax的区别。
我的问题如下:
我是否需要在我的模板和/或urls.py中添加其他内容来帮助它找到URL(去掉404)?