将javascript变量发送到django视图
我正在用javascript变量(例如var_url)获取浏览器的当前URL(该URL一直在变化).我有一个Django模型网址.我想使用视图函数 create_url()
创建其对象.
I am fetching the current url of the browser (which keeps changing) in a javascript variable (say var_url). I have a django model Url. I want to create its object using a view function create_url()
.
更早的时候,当我使用表格时,我使用的是 request.POST ['field']
.现在我没有表格,我想传递var_url的值.该怎么办?
Earlier When I used a form, I used request.POST['field']
. Now I don't have a form and I want to pass the value of var_url. How can that be done?
这是我使用表单时的视图功能:
This was my view function when I was using a form:
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>
现在,我有了这个表单:
Now rather than a form, I have this:
<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标签的内容发送到我的视图函数中.
I want to send the content of div tag to my view function.
您有两种方法-使用 form
和使用 ajax
发送数据.
You have two way - using form
and using ajax
for sending data.
假设您在js中有名为 result_data
的数据.
Assume that you have data called result_data
in js.
通过这种方式,您必须将内部数据更新为表单字段(即,使隐藏的 result_data
字段发送表单数据).
In this way, you have to update your inner data to form field (i.e. make hidden result_data
field to send form 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,因此请按自己的方式做
Then you add javascript code to add your result_data
to your hidden input value. Maybe like this..
(I'm not good at javascript, so make it your own way)
<script>
$('#js_data_input').val(result_data)
</script>
然后仅使用此数据提交表单.
Then just submit your form with this data.
如果您发送的数据没有提交表单(这意味着不重新加载/退出当前页面),则可以使用 ajax
.
If you send your data without submit form (it means that not reload/escape current page), you can use ajax
.
使用ajax时,您必须制作其他视图来接收ajax请求.
When using ajax, you have to make other view that receive your ajax request.
如果您不了解ajax,请访问 w3school 或其他网站网站.
If you don't know about ajax, please check w3school or other web site.
这是使用ajax发送 result_data
的示例
This is example for send result_data
using ajax
$.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.
You have to add
csrfmiddlewaretoken
. Else, you got 403 forbidden error. You can make csrfmiddlewaretoken by js or just using{{ csrf_token }}
from django.