我一直在阅读关于网址的内容,但我似乎无法找到与我想要做的事情类似的内容。我有一个名为profile的应用程序,此应用程序中的views.py查询数据库并返回用户特定的内容 - 我使用过滤器将db内容汇总到任何用户登录。在我的"主页"我希望所有用户都能获得数据库摘要。
所以个人资料应用中使用的网址如下所示:
url(r'^profile/$', 'profile.views.profile', name='profile'),
url(r'^profile/usrDash$', 'profile.views.usrDash')
第一个呈现"个人资料页面"第二个是由ajax调用用来发送一些用户特定信息,而这些信息又用于制定查询。这很好;没问题。
那么如果我想在"主页上显示相同的信息,请使用相同的查询"太?我怎么做?不完全是我想要做的,但如果我可以这个工作,我可以在以后适应它。我试过了:
url(r'^home/usrDash$', 'profile.views.usrDash')
但是ajax似乎并不喜欢它。没有任何错误消息,它不会发布任何内容。
我还尝试在home.views.py中编写另一个视图,但我似乎无法获得正确的网址。由于"主页"的网址格式是:
url(r'^$', 'home.views.home', name='home')
不会在home.views.py上查询网址:
url(r'^/usrDash$', 'home.views.usrDash')
有问题的ajax调用如下所示:
$.ajax({
method: "POST",
url: "profile/usrDash",
dataType: "json",
data: {
csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
someVariable: someVariable,
},
success: function(Data) {
...
...
},
error: function() {
...
}
});
所以ajax来自" home"是" profile"中使用的ajax调用的副本。修改添加配置文件/。但这也不起作用。
提前感谢您的帮助。
问候。
答案 0 :(得分:0)
看起来你有两个应用程序,一个名为“profile”,另一个名为“home”。如果我理解正确,你会想要通过“profile.views.usrDash”处理一个ajax发布请求来获取主页的信息。
那么,为什么不将ajax请求发送到'/ profile / usrDash'?为什么要将不同的URL模式与usrDash视图相关联?
您提供的尝试重用usrDash视图的代码路径不正确。它应该是 profile.views.usrDash
答案 1 :(得分:0)
原来我的代码存在两个问题。第一个是将csrf令牌传递给ajax的方式。在我的个人资料应用中,这有效:
csrfmiddlewaretoken: document.getElementsByName('csrfmiddlewaretoken')[0].value,
但它在家庭应用程序中不起作用。我不知道为什么。它适用于一个应用程序而不是另一个应用程序做了什么工作:
csrfmiddlewaretoken: '{{ csrf_token }}',
我在这篇文章中找到了这个答案:
csrf token issue with multiple templates
第二个问题是url,一旦解决了csrf令牌问题,就很容易诊断出来。最后的网址只是:
url(r'^usrDash$', 'profile.views.usrDash')
无需领先/。
感谢ArbyA花时间查看我的代码并感谢doniyor对上面链接的帖子的回复有助于最终实现这一点。
问候。