python-3.x - Django如何通过单击带有变量的提交按钮从ajax调用views.py中的函数
问题描述
我在从脚本 html HTML 调用 views.py 中的函数时遇到问题:
<form method="POST" class="msger-inputarea">
{% csrf_token %}
<input type="text" name="msg" class="msger-input" placeholder="Enter your message...">
<button type="submit" name="answer" class="msger-send-btn">Send</button>
</form>
<script type="text/javascript">
msgerForm.addEventListener("submit", event => {
event.preventDefault();
const msgText = msgerInput.value;
if (!msgText) return;
appendMessage(PERSON_NAME, PERSON_IMG, "right", msgText);
msgerInput.value = "";
botResponse(msgText);
});
function botResponse(rawText) {
alert(rawText)
alert('inside ajax')
$.ajax({
url: "{% url 'ajaxview' %}",
method: 'POST',
data: {'rawText': rawText , csrfmiddlewaretoken: '{{ csrf_token }}'},
success: function (response) {
appendMessage(PERSON_NAME, PERSON_IMG, "left", response);
},
});
}
网址.py:
path('/ajax-test-view', views.myajaxtestview, name='ajaxview')
视图.py:
def myajaxtestview(request):
input = request.POST.get('rawText')
return HttpResponse(input)
解决方案
您必须在您的视图中使用JsonResponse
( Django Docsmyajaxtestview
) 。
from django.http import JsonResponse
def myajaxtestview(request):
input = request.POST.get('msg')
return JsonResponse({"message": "My Ajax Test", input: input})
阿贾克斯:
msgerForm.addEventListener("submit", event => {
...
botResponse($(this).serialize());
});
function botResponse(data) {
$.ajax({
url: "{% url 'ajaxview' %}",
method: 'POST',
data: data,
success: function (response) {
appendMessage(PERSON_NAME, PERSON_IMG, "left", response.message);
},
});
}
网址.py:
path('ajax-test-view/', views.myajaxtestview, name='ajaxview')
添加 jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
推荐阅读
- python - 指定用于多重继承的父类
- javascript - CR和CF的javascript textarea maxlength问题
- vb.net - 为什么我的 if 语句只返回第二个结果?
- javascript - Android Webview:本地 html 加载外部 css 和 .js 文件 - 无法访问外部 .js 中的功能
- ios - 如何使用 Firebase 设置密码续订电子邮件?
- java - TSP 健身水平已关闭
- java - 替换部分xml,导航组件
- flutter - 如何永久删除 Dart DevTools?
- python - 使用 `snakemake` 的 MD 任务
- sorting - select2 以所需的顺序以编程方式选择选项