主页视图的url模式或使用应用程序的视图

时间:2015-11-30 02:27:25

标签: python ajax django url

我一直在阅读关于网址的内容,但我似乎无法找到与我想要做的事情类似的内容。我有一个名为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调用的副本。修改添加配置文件/。但这也不起作用。

提前感谢您的帮助。

问候。

2 个答案:

答案 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对上面链接的帖子的回复有助于最终实现这一点。

问候。