我在javascript变量(比如var_url)中获取浏览器的当前url(不断变化)。我有一个django模型Url。我想使用视图函数create_url()
创建其对象。
早些时候当我使用表单时,我使用了request.POST['field']
。现在我没有表单,我想传递var_url的值。怎么办?
当我使用表单时,这是我的查看功能:
def create_url(request):
if request.method == 'POST':
text=request.POST['field']
url_result=Url.objects.get_or_create(
url_text=text
)
return HttpResponse('Url Object Created')
以下是我的表格:
<form name='urlForm' method="post" action="{% url 'create_url'%}" id="create" >
{% csrf_token %}
<input type="text" id="myurl" name="field"/>
<input type="submit" name="submit" value="Submit">
</form>
现在而不是表格,我有这个:
<div id='results'></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script type="text/javascript">
window.addEventListener('message',function(e){
results.innerHTML = e.data;
});
</script>
我想将div标签的内容发送到我的视图功能。
答案 0 :(得分:0)
您有两种方法 - 使用form
并使用ajax
发送数据。
假设您在js中有result_data
的数据。
form
通过这种方式,您必须将内部数据更新为表单字段(即隐藏result_data
字段以发送表单数据)。
<form name='urlForm' method="post" action="{% url 'create_url'%}" id="create" >
{% csrf_token %}
<input type="text" id="myurl" name="field"/>
<input type="hidden" name="result_data" value="" id="js_data_input">
<input type="submit" name="submit" value="Submit">
</form>
然后添加javascript代码,将result_data
添加到隐藏的输入值。也许这样..
(我不擅长使用javascript,所以请按照自己的方式进行操作)
<script>
$('#js_data_input').val(result_data)
</script>
然后只需提交包含此数据的表单。
ajax
如果您在没有提交表单的情况下发送数据(这意味着没有重新加载/转义当前页面),您可以使用ajax
。
使用ajax时,您必须创建其他视图以接收您的ajax请求。
如果您不了解ajax,请查看w3school或其他网站。
这是使用ajax
发送result_data
的示例
$.ajax({
type: "POST",
url: '/your/path/to/ajax_view/url/',
data: {
'result_data': result_data,
'csrfmiddlewaretoken': '{{ csrf_token }}'
},
dataType: "json",
success: function(response) {
if (response.result == 'ok') {
alert(response.message);
} else {
alert('Failed');
}
}
})
您必须添加
csrfmiddlewaretoken
。否则,你有403禁止错误。您可以通过js或仅使用django中的{{ csrf_token }}
制作csrfmiddlewaretoken。