【问题标题】:Django built-in tags encoding '?' to '%3F'Django 内置标签编码'?'到“%3F”
【发布时间】:2019-10-25 19:19:00
【问题描述】:

我正在尝试将?page={{ page_num }} 传递到网址末尾的分页。

这就是我想要做的,这就是输出:

        $('#prev-page').click(() => {
            window.location.pathname = "{% url 'xadmin:get_deposits' %}?page={{ page_no|add:'-1' }}"
        });
        $('#next-page').click(() => {
            window.location.pathname = "{% url 'xadmin:get_deposits' %}?page={{ page_no|add:'1' }}"
        });

预期网址: http://localhost:8000/xadmin/deposits/?page=1

实际网址: http://localhost:8000/xadmin/deposits/%3Fpage=1

【问题讨论】:

  • 如果您检查页面的来源,您可以看到前端(javascreipt)这样做。你试过encodeURI("{% url 'xadmin:get_deposits' %}?page={{ page_no|add:'1' }}")吗?如果这不起作用,您可以在 Django 端添加对utf-8 url 的支持。

标签: django django-templates


【解决方案1】:

试试这个

 $('#prev-page').click(() => {
    window.location = "?page={{ page_no|add:'-1' }}"
  });
 $('#next-page').click(() => {
    window.location = "?page={{ page_no|add:'1' }}"
 });

【讨论】:

  • window.location.pathname 强制编码但 window.location 不强制编码的任何原因?
  • 不确定,但根据这个问题stackoverflow.com/questions/3643041/…可能是浏览器。
  • 谢谢。通过阅读该问题,看起来正确的答案是因为路径名假定所有值都将是 pathspec 的一部分,在这种情况下,? 字符将被假定为逐字翻译为路径的一部分,而不是作为? 是表示查询字符串开头的分隔符!
猜你喜欢
  • 1970-01-01
  • 2013-03-30
  • 2012-12-22
  • 2019-02-27
  • 1970-01-01
  • 2016-01-29
  • 2011-10-28
  • 2014-07-25
  • 2014-04-03
相关资源
最近更新 更多