更改站点 URL 后找不到 Django 应用程序请求
Django app request not found after changing site URLs
我有一个网页在启动时执行异步请求以获取 JSON 文件:
controller.js
$.ajax(
{
url: '/get_lines/',
data_type: 'json',
success: function(data)
{
fillLinesMenu(JSON.parse(data))
$("#form-lines option:eq(1)").attr("selected","selected");
$("#form-lines").selectmenu("refresh")
}
}
)
project/field_plot/urls.py
urlpatterns = [
url(r'^get_lines/$', views.get_lines, name='get_lines'),
url(r'^get_plot/$', views.get_plot, name='get_plot'),
url(r'', views.index, name='index'),
]
project/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('sky_map/', include('sky_map.urls')),
path('', include('field_plot.urls')),
]
这已经运行了很长一段时间了。如您所见,我一直在研究 field_plot
- 因此空 url,以简化页面加载 - 但现在我需要将此应用程序分配给其特定的项目级别 URL :
project/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('sky_map/', include('sky_map.urls')),
path('field_plot/', include('field_plot.urls')),
]
现在我需要按预期加载 http://localhost:8000/field_plot/
,但更改最后一个路径会中断 /get_lines/
和我用于 AJAX 请求的其他 URL。我错过了什么?
在您的 javascript 请求中使用 url 名称,https://docs.djangoproject.com/en/3.1/topics/http/urls/#examples
$.ajax(
{
url: "{% url 'get_lines' %}",
data_type: 'json',
success: function(data)
{
fillLinesMenu(JSON.parse(data))
$("#form-lines option:eq(1)").attr("selected","selected");
$("#form-lines").selectmenu("refresh")
}
}
)
您的 url 已从 /get_lines/
更改为 /field_plot/get_lines/
。在 javascript 中与 Django 一起使用 urls 的最佳方法是 render 模板中某处的 url 作为属性并获取它使用 javascript.
模板中的某处(理想情况下,这将是某个按钮或将触发 ajax 请求的东西,为了举例,我只使用带有 id 的 div ):
<div id="my-url-div" data-url="{% url 'get_lines' %}"></div>
现在在您的 javascript 中:
url: $("#my-url-div").data('url'),
我有一个网页在启动时执行异步请求以获取 JSON 文件:
controller.js
$.ajax(
{
url: '/get_lines/',
data_type: 'json',
success: function(data)
{
fillLinesMenu(JSON.parse(data))
$("#form-lines option:eq(1)").attr("selected","selected");
$("#form-lines").selectmenu("refresh")
}
}
)
project/field_plot/urls.py
urlpatterns = [
url(r'^get_lines/$', views.get_lines, name='get_lines'),
url(r'^get_plot/$', views.get_plot, name='get_plot'),
url(r'', views.index, name='index'),
]
project/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('sky_map/', include('sky_map.urls')),
path('', include('field_plot.urls')),
]
这已经运行了很长一段时间了。如您所见,我一直在研究 field_plot
- 因此空 url,以简化页面加载 - 但现在我需要将此应用程序分配给其特定的项目级别 URL :
project/urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('sky_map/', include('sky_map.urls')),
path('field_plot/', include('field_plot.urls')),
]
现在我需要按预期加载 http://localhost:8000/field_plot/
,但更改最后一个路径会中断 /get_lines/
和我用于 AJAX 请求的其他 URL。我错过了什么?
在您的 javascript 请求中使用 url 名称,https://docs.djangoproject.com/en/3.1/topics/http/urls/#examples
$.ajax(
{
url: "{% url 'get_lines' %}",
data_type: 'json',
success: function(data)
{
fillLinesMenu(JSON.parse(data))
$("#form-lines option:eq(1)").attr("selected","selected");
$("#form-lines").selectmenu("refresh")
}
}
)
您的 url 已从 /get_lines/
更改为 /field_plot/get_lines/
。在 javascript 中与 Django 一起使用 urls 的最佳方法是 render 模板中某处的 url 作为属性并获取它使用 javascript.
模板中的某处(理想情况下,这将是某个按钮或将触发 ajax 请求的东西,为了举例,我只使用带有 id 的 div ):
<div id="my-url-div" data-url="{% url 'get_lines' %}"></div>
现在在您的 javascript 中:
url: $("#my-url-div").data('url'),