django 类视图

django 类视图

from django.urls import reverse_lazy
from django.views.generic import (
    TemplateView, ListView, DetailView,
    CreateView, UpdateView, DeleteView
)
from .models import MyModel

# 1) 仅渲染模板,不依赖模型
class HomePageView(TemplateView):
    template_name = "myapp/base.html"


# 2) 列表视图
class MyModelListView(ListView):
    model = MyModel
    template_name = "myapp/object_list.html"     # 指定模板
    context_object_name = "object_list"          # 在模板中使用的上下文变量
    paginate_by = 10                             # 如果需要分页

# 3) 详情视图
class MyModelDetailView(DetailView):
    model = MyModel
    template_name = "myapp/object_detail.html"
    context_object_name = "object"


# 4) 新建视图
class MyModelCreateView(CreateView):
    model = MyModel
    fields = ["title", "content"]               # 自动生成表单字段
    template_name = "myapp/object_form.html"
    success_url = reverse_lazy("myapp:list")     # 成功后跳转

# 5) 更新视图
class MyModelUpdateView(UpdateView):
    model = MyModel
    fields = ["title", "content"]
    template_name = "myapp/object_form.html"
    success_url = reverse_lazy("myapp:list")

# 6) 删除视图
class MyModelDeleteView(DeleteView):
    model = MyModel
    template_name = "myapp/object_confirm_delete.html"
    success_url = reverse_lazy("myapp:list")

路由配置

from django.urls import path
from .views import (
    HomePageView, MyModelListView, MyModelDetailView,
    MyModelCreateView, MyModelUpdateView, MyModelDeleteView
)

app_name = "myapp"

urlpatterns = [
    path("", HomePageView.as_view(), name="home"),
    path("objects/", MyModelListView.as_view(), name="list"),
    path("objects/add/", MyModelCreateView.as_view(), name="add"),
    path("objects//", MyModelDetailView.as_view(), name="detail"),
    path("objects//edit/", MyModelUpdateView.as_view(), name="edit"),
    path("objects//delete/", MyModelDeleteView.as_view(), name="delete"),
]

base.html




  
  {% block title %}MyApp{% endblock %}
  


  
  
{% block content %}{% endblock %}

列表页(object_list.html)

{% extends "myapp/base.html" %}
{% block title %}对象列表{% endblock %}

{% block content %}
  

对象列表

    {% for obj in object_list %}
  • {{ obj.title }} — {{ obj.created_at|date:"Y-m-d H:i" }}
  • {% empty %}
  • 暂无数据
  • {% endfor %}
{# 分页导航 #} {% if is_paginated %} {% endif %} {% endblock %}

详情页(object_detail.html)

{% extends "myapp/base.html" %}
{% block title %}对象详情{% endblock %}

{% block content %}
  

{{ object.title }}

{{ object.content }}

创建于:{{ object.created_at|date:"Y-m-d H:i" }}

编辑 | 删除 | 返回列表

{% endblock %}

表单页(object_form.html)

{% extends "myapp/base.html" %}
{% block title %}{{ view.action }} 对象{% endblock %}
{% block content %}
  

{{ view.action }} 对象

{% csrf_token %} {{ form.as_p }}
取消 {% endblock %}

你可能感兴趣的:(Python-Django,sqlite,数据库,windows)