[英]use csrf_token in javascript created element form
Well i have created form element using javascript.好吧,我已经使用 javascript 创建了表单元素。 The reason is, i am updating user page using ajax.
原因是,我正在使用 ajax 更新用户页面。
I have the created form element bellow我有下面创建的表单元素
var tagform =document.createElemenet('form')
var tagbutton =document.createElemenet('button')
tagform.setAttribute('method','post');
tagform.setAttribute('action','/businesshub/comment_delete/');
tagbutton.setAttribute('type','submit');
tagform.appendChild(tagbutton );
The only problem i face when submitting the created form is, i get the error提交创建的表单时我面临的唯一问题是,我收到错误
Forbidden (403)禁止 (403)
CSRF verification failed. CSRF 验证失败。 Request aborted.
请求中止。
I am using django .我正在使用 django 。 How can i implemented {% csrf_token %} to my created Element form using javascript.
我如何使用 javascript 将 {% csrf_token %} 实现到我创建的元素表单。 Thanks
谢谢
Get CSRF Token using使用获取 CSRF 令牌
<script>
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return;
}
</script>
And Ajax will be而阿贾克斯将会
$.ajax({
url: 'your url',
type: 'POST',
data: formData,
headers: {"X-CSRFToken": getCookie('csrftoken')},
success: function (data) {
},
}) })
You need the csrf_token to be passed to the server too.您也需要将 csrf_token 传递给服务器。
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
in you case something like:在你的情况下是这样的:
var csrf =document.createElemenet('input')
csrf.setAttribute('type','hidden');
csrf.setAttribute('value','{{ csrf_token }}');
tagform.appendChild(csrf);
I got a simple and a better solution .我得到了一个简单且更好的解决方案。 Since in my django template i can use {% csrf_token %} is used
因为在我的 django 模板中我可以使用 {% csrf_token %}
i just need to access it using jquery or javascript我只需要使用 jquery 或 javascript 访问它
<script>
var csrfToken = document.getElementsByName('csrfmiddlewaretoken')[0].value
var tagform =document.createElemenet('form')
var tagbutton =document.createElemenet('button')
var csrftoken = document.createElement("input");
csrftoken.setAttribute("type", "hidden");
csrftoken.setAttribute("name", 'csrfmiddlewaretoken');
csrftoken.setAttribute("value", csrfToken);
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.