【问题标题】:How to change the url when an AJAX post is done, without page reload如何在 AJAX 帖子完成后更改 url,而无需重新加载页面
【发布时间】:2011-12-13 17:54:49
【问题描述】:

我正在 Django 中构建一个博客应用程序,并且在我的网站上注册的任何用户都可以编写博客。在构建模型时,我选择通过 user.id 和 title 的组合来表示每个博客作为 slug 字段。因此,标题为 My Blog of a user with id 8909 的博客将是

/blogs/8909/My-Blog/

当我尝试向用户提供preview 按钮时出现问题。预览的作用是更新数据库中的博客,并在新标签页中打开博客。但是,由于我用标题来表示博客,如果用户更改标题,那么我也需要更改当前 url,否则 url 在后端将不存在。

我还没有遇到可以编辑 url 的方法,我只遇到过告诉我可以编辑哈希字段的文章,但仅此而已。

什么可以解决我的问题。

【问题讨论】:

    标签: jquery django url blogs


    【解决方案1】:

    给每个博客一个不变的 id 并在你的路由中使用它,例如:

    /blogs/{userId}/{blogId}
    

    这样,您的资源标识符就不会与用户可以更改的任何内容相关联。

    但是,如果无法执行上述操作,您可以考虑存储最近更改的标题列表,并在请求任何“过期”资源时发出重定向响应。

    【讨论】:

    • 是的,我终于只用了这个,实际上我最近开始了 django 开发,当我看到现有的应用程序时,它们都有相同的方式使用 slug 字段制作 url,所以我开始了......但现在我已经学会了它的艰难方式
    【解决方案2】:

    如果您正在异步执行并且不想回发页面,您可以尝试 window.history.pushState,它可以更改 URL 而无需回发,但请记住在后端您还必须更改您所在的数据库维护实际的 URL。您可以找到“如何在没有页面回发的情况下更改 URL: "这里有一些细节,希望对你有用

    http://arbtech.co.in/search_blog.aspx?q=How-to-change-URL-withought-page-postback-:

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 2016-02-01
      • 2017-10-06
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 2013-04-25
      • 1970-01-01
      • 2016-10-31
      相关资源
      最近更新 更多