当前位置: 首页 > news >正文

Django按照文章ID删除文章

重点是‘文章的ID’作为参数,如何在各个部分传递。

1、在视图函数部分

@login_required
def article_list(request):articles = ArticlePost.objects.filter(author=request.user)context = {'articles': articles, }return render(request, 'article/column/article_list.html', context)

2、在html部分,代表删除的图标,被点击时,调用javascript中的del_article函数,这个函数包含参数article.id。view函数渲染这个html文件时,传递了articles变量,article是遍历articles后获得的,要获得article的各个属性,使用‘.’方法。

{% for article in articles %}<tr id={{ article.id }}><td>{{ forloop.counter }}</td><td><a href="{{ article.get_absolute_url }}">{{ article.title }}</a></td><td>{{ article.column }}</td><td><a name="edit" href="{% url 'article:redit_article' article.id %}"><span class="fas fa-pencil-alt"></span></a><a name="delete" href="javascript:" onclick="del_article(this, {{ article.id }})"><span class="fas fa-trash-alt" style="margin-left: 20px;"></span></a></td></tr>
{% endfor %}

3、在javascript部分,articleId获得article.id的值,并将其提交给服务器

    function del_article(element, articleId) {console.log("Delete icon clicked")if (confirm("Are you sure you want to delete this column?")) {console.log("Column to delete:", articleId);fetch(`/article/delete-article/`, {method: 'DELETE',headers: {'Content-Type': 'application/json','X-CSRFToken': getCookie('csrftoken')  // Django 的 CSRF token},body: JSON.stringify({article_id: articleId,}) //发送到后台的是一个字典,}).then(response => {if (response.ok) {// 删除成功alert('文章删除成功');// 删除成功后刷新页面window.location.reload();} else {// 删除失败alert('删除失败,请重试');}}).catch(error => {console.error('Error:', error);alert('删除失败,请重试');});}}

4、在视图部分,使用字典的键article_id,获得传递的‘文章ID’,并执行删除操作。

@csrf_exempt
@login_required
def delete_article(request):if request.method == 'DELETE':try:data = json.loads(request.body)article_id = data.get('article_id')delete_article = ArticlePost.objects.get(id=article_id)delete_article.delete()return JsonResponse({'status': 'success'})except ArticlePost.DoesNotExist:return JsonResponse({'status': 'error', 'message': 'ArticleColumn not found'}, status=404)except Exception as e:return JsonResponse({'status': 'error', 'message': str(e)}, status=500)return JsonResponse({'status': 'error', 'message': 'Invalid request method'}, status=400)

http://www.lryc.cn/news/365474.html

相关文章:

  • Java | Leetcode Java题解之第136题只出现一次的数字
  • 文件系统小册(FusePosixK8s csi)【1 Fuse】
  • Bootstrap 环境安装
  • GWT 与 Python App Engine 集成
  • golang的函数为什么能有多个返回值?
  • 一次 K8s 故障诊断:从 CPU 高负载到存储挂载泄露根源揭示
  • python大作业:实现的简易股票简易系统(含源码、说明和运行截图)
  • python-NLP常用数据集0.1.012
  • 【大事件】docker可能无法使用了
  • 探索Linux中的gzip命令:压缩与解压缩的艺术
  • Shell 输入/输出重定向
  • 为什么RPC要比Http高效?
  • 局域网电脑监控软件是如何监控到内网电脑的?
  • 精妙无比的App UI 风格
  • SQL优化系列-快速学会分析SQL执行效率(下)
  • 交流非线性RCD负载的核心功能
  • 英语学习笔记31——Where‘s Sally?
  • 【Unity脚本】使用脚本操作游戏对象的组件
  • 学习VUE3——组件(一)
  • 2024-6-6 石群电路-25
  • vue 文件预览mp4、txt、pptx、xls、xlsx、docx、pdf、html、xml
  • 生活中优秀学习习惯
  • 什么是负载均衡?在网络中如何实现?
  • 【YOLOv10改进[Backbone]】图像修复网络AirNet助力YOLOv10目标检测效果 + 含全部代码和详细修改方式 + 手撕结构图 + 全网首发
  • ubuntu22.04 gitleb服务器满了,扩容机器的磁盘的详细步骤
  • kafka-集群-主题创建
  • Python 连接 MySQL 及 SQL增删改查(主要使用sqlalchemy)
  • JAVAEE值网络编程(2)_TCP流套接字及通信模型、TCP网络编程及代码实例
  • 【MMU】——MMU 页命中/缺页
  • Win32和c++11多线程