Python 向Django添加Ajax
我在Django项目中构建了一个简单的消息传递系统。当前,用户需要刷新页面以查看新消息。如何添加Ajax以异步加载消息 视图: Messages.html:Python 向Django添加Ajax,python,django,ajax,asynchronous,Python,Django,Ajax,Asynchronous,我在Django项目中构建了一个简单的消息传递系统。当前,用户需要刷新页面以查看新消息。如何添加Ajax以异步加载消息 视图: Messages.html: <h6>Inbox</h6> {% for message in inbox %} <ul> <li title="{{ message.sender.username }}">{{ message.s
<h6>Inbox</h6>
{% for message in inbox %}
<ul>
<li title="{{ message.sender.username }}">{{ message.sender.first_name }}: {{ message.msg_content }}
<button onclick="myFunction()">Reply</button>
</li>
<small>-{{ message.timestamp }}</small>
<hr>
</ul>
{% endfor %}
收件箱
{收件箱%中的邮件为%0}
- {{{message.sender.first_name}}:{{message.msg_content}
回复
-{{message.timestamp}
{%endfor%}
您可以在静态文件夹中创建一个Javascript文件来执行此操作
在发送POST请求时,需要包含CSRF令牌,以便以安全的方式执行此过程。查看Django's了解更多详细信息。第一个函数从cookies获取CSRF令牌:
getCookie(名称){
让cookieValue=null;
if(document.cookie&&document.cookie!=''){
让cookies=document.cookie.split(“;”);
for(设i=0;i
这是用于发送/接收数据的Ajax代码,只是普通的Javascript。当用户首次加载页面时,x秒后(如果其他人发送消息,则显示消息)或用户发送消息后,相同的代码将加载以前的消息:
requestAjax(数据){
//使用上一个函数获取CSRF令牌
让csrftoken=getCookie('csrftoken');
//启动新的AJAX请求
const request=new XMLHttpRequest();
open('POST','/addmessages/',true);
//使用CSRF令牌代码设置请求标头
setRequestHeader('X-CSRFToken',CSRFToken);
setRequestHeader('contentType','application/json;charset=utf-8');
//请求完成时的回调函数
request.onload=()=>{
//服务器返回一个请求对象
const serverResponse=JSON.parse(request.responseText);
//请求对象包含一个带有布尔值的“success”键,用于指示请求是否成功
if(serverResponse.success){
//如果“成功”,则显示收到的消息
}
否则{
//如果“success”为false,则表示存在服务器端错误,请显示错误消息
}
}
//将消息接收器和消息内容发送到服务器
request.send(JSON.stringify(data));
}
您可以在静态文件夹中创建一个Javascript文件来执行此操作
在发送POST请求时,需要包含CSRF令牌,以便以安全的方式执行此过程。查看Django's了解更多详细信息。第一个函数从cookies获取CSRF令牌:
getCookie(名称){
让cookieValue=null;
if(document.cookie&&document.cookie!=''){
让cookies=document.cookie.split(“;”);
for(设i=0;i
这是用于发送/接收数据的Ajax代码,只是普通的Javascript。当用户首次加载页面时,x秒后(如果其他人发送消息,则显示消息)或用户发送消息后,相同的代码将加载以前的消息:
requestAjax(数据){
//使用上一个函数获取CSRF令牌
让csrftoken=getCookie('csrftoken');
//启动新的AJAX请求
const request=new XMLHttpRequest();
open('POST','/addmessages/',true);
//使用CSRF令牌代码设置请求标头
setRequestHeader('X-CSRFToken',CSRFToken);
setRequestHeader('contentType','application/json;charset=utf-8');
//请求完成时的回调函数
request.onload=()=>{
//服务器返回一个请求对象
const serverResponse=JSON.parse(request.responseText);
//请求对象包含一个带有布尔值的“success”键,用于指示请求是否成功
if(serverResponse.success){
//如果“成功”,则显示收到的消息
}
否则{
//如果“success”为false,则表示存在服务器端错误,请显示错误消息
}
}
//将消息接收器和消息内容发送到服务器
request.send(JSON.stringify(data));
}
这是否回答了您的问题?这回答了你的问题吗?创建这些函数后,我在哪里调用它们?在视图或html?中,这些是Javascript函数,因此您无法在使用Python的view.py文件中调用它们。理想情况下,您可以创建一个script.js文件并将前端逻辑放在那里。或者,在创建这些函数后,可以使用html文件上的脚本标记添加它们,我在哪里调用它们?在视图或html?中,这些是Javascript函数,因此您无法在使用Python的view.py文件中调用它们。理想情况下,您可以创建一个script.js文件并将前端逻辑放在那里。或者您可以使用html文件上的脚本标记添加它们
<h6>Inbox</h6>
{% for message in inbox %}
<ul>
<li title="{{ message.sender.username }}">{{ message.sender.first_name }}: {{ message.msg_content }}
<button onclick="myFunction()">Reply</button>
</li>
<small>-{{ message.timestamp }}</small>
<hr>
</ul>
{% endfor %}