小编Cra*_*ard的帖子

Django使用reverse()重定向到依赖于查询字符串的URL

我正在编写一个django应用程序,其URL为'http:// localhost/entity/id /?overlay = other_id'.其中id是特定实体的主键,而overlay是第二个实体在显示中重叠的可选查询参数.用户只能在通过叠加层查看对象时更新实体.当POST到/ update/id时,我想重定向回/ entity/id,但我不希望在重定向期间丢失我的查询参数,因为视图中的更改会变得不和谐.

例如,我在url.py中有以下内容:

...
(r'^update/(?P<id>.+)/(?P<overlay_id>.+)/$', 'update'),
(r'^entity/(?P<id>.+)/$', 'view'),
...
Run Code Online (Sandbox Code Playgroud)

因为更新时需要overlay_id,所以它是URL的一部分,而不是查询参数.在django视图中,我想在POST成功后重定向并使用reverse()来避免在我的python代码中引用URL.一般的想法是:

return HttpResponseRedirect(
  reverse('views.view',
    kwargs={
      'id': id,
    },
  )
)
Run Code Online (Sandbox Code Playgroud)

但是如何通过反向传递我的查询参数?

谢谢,克雷格

django django-views

13
推荐指数
2
解决办法
2万
查看次数

jQuery ajax POST导致立即GET到同一个URL

我正在使用带有Django后端的jQuery(1.4.2)并在Debian上使用Firefox(3.5.15)进行开发.我正在使用$ .ajax()将一些数据发布到我的服务器,这会将数据反映回浏览器.Firefox正在发送POST,然后立即在同一个URL上执行GET.GET来自哪里?我不希望它发生.

我用于POST的代码如下所示:

$.ajax({
    type: 'POST',
    url: '/edit_value/',
    data: JSON.stringify(data_to_post),
    success: function(updated) {
        alert('success');
    },
    error: function(request, description, exception) {
        alert('error');
    },
    async: false,
    dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)

我看到成功警报消息,而不是错误警报消息.查看我的服务器日志,我正在回显data_to_post.

我已经看过tcpdump并看到了POST请求.它看起来完全像我期望的那样:

POST /edit_value/ HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101028 Iceweasel/3.5.15 (like Firefox/3.5.15)
Accept: application/json, text/javascript, */*
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://localhost:8000/
Content-Length: 30
Cookie: csrftoken=9e3edd79a51956f088f4a505ca1b4282; sessionid=80d72430f4682632ccfb8dc8047b7d17
Pragma: no-cache
Cache-Control: no-cache

[{"id":"161","value":"988.0"}]
Run Code Online (Sandbox Code Playgroud)

响应看起来也很正常:

HTTP/1.0 200 …
Run Code Online (Sandbox Code Playgroud)

ajax firefox jquery

3
推荐指数
1
解决办法
2170
查看次数

标签 统计

ajax ×1

django ×1

django-views ×1

firefox ×1

jquery ×1