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

Django视图(未分离)

ListViewDetailViewCreateViewUpdateViewDeleteView 是 Django 框架中基于类的通用视图(Class-Based Generic Views)

 配置 URL 路由
在 urls.py 中为这些视图配置路由:

from django.urls import path
from .views import (PostListView,PostDetailView,PostCreateView,PostUpdateView,PostDeleteView,
)urlpatterns = [path('', PostListView.as_view(), name='post-list'),  # 文章列表页path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),  # 文章详情页path('post/new/', PostCreateView.as_view(), name='post-create'),  # 创建新文章path('post/<int:pk>/update/', PostUpdateView.as_view(), name='post-update'),  # 更新文章path('post/<int:pk>/delete/', PostDeleteView.as_view(), name='post-delete'),  # 删除文章
]

1. ListView

  • 用途: 显示一组对象的列表。
  • 典型场景: 展示数据库中的多条记录,比如博客文章列表、用户列表等。
from django.urls import reverse_lazy
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from .models import Post# 显示所有文章的列表
class PostListView(ListView):model = Posttemplate_name = 'blog/post_list.html'  # 自定义模板路径context_object_name = 'posts'  # 自定义上下文变量名
<h1>文章列表</h1>
<a href="{% url 'post-create' %}">新建文章</a>
<ul>{% for post in posts %}<li><a href="{% url 'post-detail' post.pk %}">{{ post.title }}</a><a href="{% url 'post-update' post.pk %}">编辑</a><a href="{% url 'post-delete' post.pk %}">删除</a></li>{% endfor %}
</ul>

2. DetailView

  • 用途: 显示单个对象的详细信息。
  • 典型场景: 查看某篇文章的详细内容、某个用户的个人资料等。
# 显示单篇文章的详细信息
class PostDetailView(DetailView):model = Posttemplate_name = 'blog/post_detail.html'  # 自定义模板路径context_object_name = 'post'  # 自定义上下文变量名
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
<p>发布时间: {{ post.created_at }}</p>
<a href="{% url 'post-list' %}">返回列表</a>

3. CreateView

  • 用途: 创建一个新的对象。
  • 典型场景: 提供一个表单让用户填写并提交数据,例如发布一篇新文章。
# 创建新文章
class PostCreateView(CreateView):model = Posttemplate_name = 'blog/post_form.html'  # 自定义模板路径fields = ['title', 'content']  # 表单中需要显示的字段success_url = reverse_lazy('post-list')  # 成功后跳转到文章列表页
<h1>{% if object %}编辑文章{% else %}新建文章{% endif %}</h1>
<form method="post">{% csrf_token %}{{ form.as_p }}<button type="submit">保存</button>
</form>
<a href="{% url 'post-list' %}">取消</a>

4. UpdateView

  • 用途: 更新一个现有的对象。
  • 典型场景: 编辑已有的数据,例如修改一篇文章的内容。

# 更新现有文章
class PostUpdateView(UpdateView):model = Posttemplate_name = 'blog/post_form.html'  # 自定义模板路径fields = ['title', 'content']  # 表单中需要显示的字段success_url = reverse_lazy('post-list')  # 成功后跳转到文章列表页

5. DeleteView

  • 用途: 删除一个现有的对象。
  • 典型场景: 删除某篇文章、某个用户等。

# 删除文章
class PostDeleteView(DeleteView):model = Posttemplate_name = 'blog/post_confirm_delete.html'  # 自定义模板路径success_url = reverse_lazy('post-list')  # 成功后跳转到文章列表页

<h1>确认删除文章 "{{ object.title }}" 吗?</h1>
<form method="post">{% csrf_token %}<button type="submit">确认删除</button>
</form>
<a href="{% url 'post-list' %}">取消</a>

相关文章:

  • ARINC818协议-持续
  • CSS appearance 属性:掌握UI元素的原生外观
  • 2025第十七届“华中杯”大学生数学建模挑战赛题目B 题 校园共享单车的调度与维护问题完整思路 模型 代码 结果分享
  • 冰川流域提取分析——ArcGIS pro
  • centos7 安装miniconda
  • harbor Rocky linux 9.5 Docker部署
  • oracle值sql记录
  • 【强化学习】#2 有限马尔可夫决策过程
  • TQTT_KU5P开发板教程---千兆以太网传输测试
  • Oracle补丁安装工具opatch更新报错处理
  • AI 对话高效输入指令攻略(二):关于豆包的指令
  • vscode vue个别文件不显示折叠标记
  • TCP/UDP与线程进程全解析:从原理到实战
  • ESP32-idf学习(一)搭建环境和点灯
  • 【python】pyCharm常用快捷键使用-(2)
  • 解决:VSCode C++ conan 安装第三方库后 头文件报错
  • 急性肠胃炎药物清单:甲氧氯普胺、蒙脱石散、诺氟沙星怎么用?
  • 【HarmonyOS NEXT+AI】问答 03:找不到 DevEco Studio Cangjie Plugin 下载链接?
  • Python 之count()报错
  • javaSE————网络编程套接字
  • 湖南建设工程竣工备案表查询网站/怎么搭建自己的网站
  • 银川做网站多少钱/全网营销整合营销
  • 校园文化建设网站/汕头seo全网营销
  • 小程序模板网 凡平台/seo技巧与技术
  • 深圳做微信商城网站建设/关键词林俊杰mp3
  • 郑州做网站天强科技/电脑清理软件十大排名