首页 > 编程问答 >Django 仅发送更改响应而不是完整模板

Django 仅发送更改响应而不是完整模板

时间:2024-07-27 15:15:40浏览次数:11  
标签:python django django-views

如何只发送一条警报消息来响应请求,而不必发送专门为警报制作的模板?

我正在使用 Javascript 异步调用。我只需要警报 html 响应即可呈现 InnerHTML

查看

@login_required(login_url="/login/")
@csrf_protect
def usersave(request):
msg = messages.add_message(request, messages.WARNING, "This is a demo. First complete all info to save.")
return render(request, msg)   # Want to send just msg instead of a template for an alert. 

在 Django 中,你不能直接将 messages.add_message 的结果渲染成响应。 messages 框架设计用于与模板一起使用,在模板中你可以显示添加的任何消息。

为了只发送警报消息而不渲染完整模板,你可以返回一个 JSON 响应,其中包含警报消息,然后在你的 JavaScript 代码中使用它来显示警报。

以下是更新后的 usersave 视图:

from django.http import JsonResponse
from django.contrib import messages
from django.contrib.auth.decorators import login_required

@login_required(login_url="/login/")
@csrf_protect
def usersave(request):
    messages.add_message(request, messages.WARNING, "This is a demo. First complete all info to save.")
    return JsonResponse({'message': "This is a demo. First complete all info to save."})

在这个更新后的视图中:

  • 我们导入了 JsonResponse
  • 我们没有渲染模板,而是使用警报消息创建了一个字典,并使用 JsonResponse 返回它。

现在,在你的 JavaScript 代码中,你可以解析这个 JSON 响应并使用该消息显示警报:

fetch('/usersave/')
.then(response => response.json())
.then(data => {
  alert(data.message);
});

这将显示一个带有从 Django 视图发送的消息的警报。

请记住: 你仍然需要在你的基本模板中包含 Django 的消息框架,以便处理任何其他需要在模板中显示的消息。

标签:python,django,django-views
From: 78800764

相关文章

  • 【Python】利用 face_recognition 库进行人脸检测识别【附完整示例】
    1.背景条件1.1安装所需库首先安装face_recognition和Pillow这两个库。您可以使用以下命令来安装它们:pipinstallface_recognitionPillow-ihttps://pypi.tuna.tsinghua.edu.cn/simple1.2拷贝代码安装完成后,您就可以在本地运行以下提供的代码了。importfac......
  • 太强了,Python+Excel真的是神仙组合!
    本书是由流行开源Python库xlwings的创始人:费利克斯·朱姆斯坦(FelixZumstein)所撰写。他详细阐述了如何将Python与Excel结合使用,让任务自动化,从而实现效率飞跃。为了帮助初学者克服对Python的恐惧,作者特意将教程内容设计成从简单到复杂的顺序进行介绍。这本书PDF共282页,分为4个......
  • 在 Python 中获取精确的 Android GPS 位置
    我尝试在Python中获取Android手机的GPS位置(使用QPython3应用程序)。这种可行,但是Android中似乎有几个LocationProvider:gps:纯gps定位,速度慢,耗能,但非常准确,正是我所需要的。网络:GPS和wifi/小区定位的混合,更快,但不太准确被动......
  • 使用 docker run 将 Python 单击选项传递给 ENTRYPOINT 会出现错误:“在 $PATH 中找不
    我有一个简单的python脚本,我想在docker容器内运行它。它打印一行消息“Hello{name}”。python脚本使用clickCLI界面来定义收件人名称,如果我直接运行它(不使用dockerrun命令),它将如下所示:pythonhello.py-nSmithDockerbuild命令:dockerbuild.-thello:1.......
  • 标题:在 OpenSees Python 中定义具有特定卸载行为的双线性弹塑性材料
    我正在使用Python中的OpenSees,我想定义一种在负载下表现出双线性弹塑性行为的材料。但是,我需要在卸载过程中将材质返回到其原始位置,遵循准确的加载路径。在此处输入图像描述我不确定如何在OpenSees中正确实现卸载行为,我正在寻找实现这一具体材料反应的指导。......
  • 使用正则表达式删除Python中常见的公司名称后缀
    我正在努力删除一些公司名称中的后缀。预期结果如下:原始名称:AppleInc.SonyCorporationFiatChryslerAutomobilesS.p.A.SamsungElectronicsCo.,Ltd.清除名称:AppleSonyFiatChryslerAutomobilesSamsungElectronics到目前为止我所做的:importred......
  • 如何将 Brave 网络浏览器与 python、selenium 和 chromedriver 结合使用?
    我从Google的Chrome切换到Brave网络浏览器并且很难让它像Chrome一样与Brave一起使用。Brave是基于Chromium的,所以我猜它应该不会那么难。我确保我的Brave和Chromedriver处于相同版本,像这样,~/some/path$chromedriver--versionChromeDriver76.0.3......
  • 覆盖 python 应用程序时权限被拒绝
    我使用python制作了一个粗略的自动更新应用程序,并使用freeze-cx制作了exe文件。首先,该应用程序检查firebase服务器上是否有最新版本的文件可用,如果可用则下载zip文件。并且应用程序解压并覆盖文件。this_file_path=sys.executableifgetattr(sys,'frozen......
  • Python数据分析案例55——基于LSTM结构自编码器的多变量时间序列异常值监测
    案例背景时间序列的异常值检测是方兴未艾的话题。比如很多单变量的,一条风速,一条用电量这种做时间序列异常值检测,想查看一下哪个时间点的用电量异常。多变量时间序列由不同变量随时间变化的序列组成,这些时间序列在实际应用中通常来自不同的传感器或数据源。多变量时间序列异......
  • 【Django】 js实现动态赋值、显示show隐藏hide效果
    文章目录需要达到的前端效果预览:实现步骤复制bootstrp代码(buttons)复制bootstrp代码(Alert警告框)写js测试效果需要达到的前端效果预览:{%loadstatic%}<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="......