我试图解决的问题是,我创建了一个 Ajax 自动更正输入功能和一个按钮的“onclick”,我获取该输入中的值并尝试将页面重定向到 Django URL。
这是我的 url.py 文件中的 URL:
url(r'^groups/add-member/(?:/(?P<pk_group>[-\w]+))?/(?:/(?P<pk_member>[-\w]+))?/$', views.add_member, name='add-member')
在 HTML 中我有这个脚本:
<script>
function add_member(id){
var input=document.getElementById("myText").value
console.log(id) //Correctly gets ID #
console.log(input) //Correctly gets the name (string) of member instance
url = "{% url 'add-member' 0 zzzz %}".replace('0', id).replace('zzzz',input);
}
</script>
我得到的错误是:
Reverse for 'add-member' with arguments '(0, '')' not found. 1 pattern(s) tried:
['flexfeed/groups/add-member/(?:/(?P<pk_group>[-\\w]+))?/(?:/(?P<pk_member>[-\\w]+))?/$']
我无法理解我的错误。如果有人可以建议如何解决此问题或可能建议针对此特定问题采取不同的方法,我将非常感激!
最终目标是我希望我的页面重定向到正确链接处的更新 View !
最佳答案
好的,所以发生的顺序有问题。当 Django 呈现您的模板时,它会处理标签。这发生在调用任何 javascript 之前。
因此,您尝试使用 0 和 zzzz 作为参数来调用 url。 Django 尝试获取它,因为第二个参数是一个空变量,所以它不匹配任何内容。
我会通过使用两个有效的变量调用 url,然后使用 javascript 更改它们来解决此问题。
url = "{% url 'add-member' 0 'change-team' %}";
url = url.replace(0, id).replace('change-team', input);
您也可以只在 zzzz 两边加上引号。
关于javascript - Django URL使用javascript获取客户端信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666302/