jquery - 如何在 Django 中调用正确的视图方法?
问题描述
我有一个包含这些文件和文件夹的项目:
...
old
project
new
common
manage.py
...
我使用http://127.0.0.1:8000/old访问“旧” ,并且此文件夹中有视图、表单 url 等文件。一切正常。
我在“新”文件夹中也有类似的文件。它也运行良好: http: //127.0.0.1 :8000/old
但是,当我在视图中有一个方法(“method1”)并且我在 url 中声明它时遇到了问题。但是,它在“旧”文件夹中搜索方法 1,而不是在“新”文件夹中。
$.post('{% url "method1" %}
我有里面的网址
path('method/', views.method1, name='method1'),
我不知道为什么这个 js 在“旧”中搜索 method1。当我在旧文件夹中声明 method1 时,它工作正常。
我在这里想念什么?
更新
没有js也可以,这个方法很好,但是在js代码里面失败了我把js代码放在这里:
{% block domready %}
$('a.cost').click(function(e){
e.preventDefault();
$.post('{% url "method1" %}',
{
action: $(this).data('action')
},
function(data){
//...
}
);
});
{% endblock %}
解决方案
我认为您的其他“urls.py”有问题,它可能位于“项目”目录中。
您需要将两个应用程序都放在项目的主要 urlpatterns 中:
urlpatterns = [
path('old/', include('old.urls')),
path('new/', include('new.urls'))
]
如果您尝试使用不同的文件夹来存储不同的东西,那么抱歉,但默认的 django 路由器适用于应用程序,因此每个应用程序都有一个目录。因此,对于“旧”应用程序,您可以在“旧”文件夹中执行所有操作,如果您想制作另一个应用程序 - 您需要制作一个。
如果您将 a 添加namespace
到应用程序的 url 中new
,则需要在反转 url 时为所有名称添加前缀:
{% url "new:method1" %}
推荐阅读
- python - 如何使用 Python 从布尔表达式生成弹性搜索查询?
- c++ - C++ 使用命令 sfc /scannow 运行错误
- oracle - 如何从 DB2 或 Oracle 迁移到 TiDB?
- airflow - 检索气流中追赶=真的预定时间
- python - 如何在显示 matplotlib 动画后删除 Jupyter 输出中的残差图?
- java - 如何在 opshift 3 上部署 Wildfly EAR 应用程序
- wpf - 更改树节点属性后更新 WPF TreeView 树节点图像
- python - 了解这些 numpy 切片操作的结果形状
- java - 一段时间后,kafka经纪人失败了
- amazon-web-services - 如何修复 aws elastick beanstalk 的 postgresql 版本错误?