在Django中,使用模型(Model)来表示应用程序中的数据。列表视图(ListView)用于显示模型的列表,而详细视图(DetailView)用于显示单个模型实例的详细信息。
假设有一个博客应用,需要展示所有博客文章的列表,并且点击每篇文章可以进入文章的详细页面。下面是解决该需求的代码示例:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
from django.views.generic import ListView, DetailView
from .models import Article
class ArticleListView(ListView):
model = Article
template_name = 'article_list.html'
class ArticleDetailView(DetailView):
model = Article
template_name = 'article_detail.html'
from django.urls import path
from .views import ArticleListView, ArticleDetailView
urlpatterns = [
path('', ArticleListView.as_view(), name='article_list'),
path('/', ArticleDetailView.as_view(), name='article_detail'),
]
article_list.html
{% extends 'base.html' %}
{% block content %}
Article List
{% for article in object_list %}
- {{ article.title }}
{% endfor %}
{% endblock %}
article_detail.html
{% extends 'base.html' %}
{% block content %}
{{ object.title }}
{{ object.content }}
Created at: {{ object.created_at }}
{% endblock %}
base.html
{% block title %}{% endblock %}
{% block content %}{% endblock %}
以上就是利用Django的Model、ListView和DetailView来展示博客列表和详细信息的一个示例。