Django视图扩展类知识点详解

首先我们来介绍一下Django中的视图扩展类。视图扩展类是一种Django中预定义的类,我们可以继承这些类,使用这些类中已经实现的方法,来达到一些常见的功能。

常见的几种视图扩展类包括:TemplateView(模板视图)、ListView(列表视图)、DetailView(详细视图)、FormView(表单视图)等等。

接下来我们通过2个实例来学习这些视图扩展类的使用。

示例一:TemplateView

模板视图是用来展示一个简单的HTML页面的,可以简单地理解为一个纯展示页面的视图。

首先我们需要在urls.py文件中,将视图类对应到一个url上。比如,我们将一个URL地址和TemplateView对应起来,代码如下:

from django.urls import path
from django.views.generic import TemplateView

urlpatterns = [
    path('about/', TemplateView.as_view(template_name='about.html'), name='about'),
]

这里我们使用了as_view()函数,将TemplateView转换成一个可调用的函数,然后使用它的template_name属性来告诉它展示的模板的名称。

接下来,我们编写一个about.html页面,该页面可以展示项目的相关信息,代码如下:

{% extends "base.html" %}

{% block content %}
<h1>About Us</h1>
<p>We are a team of developers who love creating amazing web applications.</p>
{% endblock %}

在这个页面中,我们定义了一些HTML代码,其中用到了base.html作为它的父模板,然后在该页面中展示了一些文字信息。

如果我们访问/about/这个网址,就可以看到这个页面中的信息了。

示例二:ListView

列表视图是用来展示一组内容的,通常是从数据库中提取出数据,然后使用ListView来渲染到页面上。我们可以继承ListView类来自定义一些属性和方法,以实现我们的需求。

在这个示例中,我们建立一个博客应用(blog),并且使用ListView展示所有的文章列表。我们需要在models.py文件中定义一个Article类,来存储文章的相关信息。

models.py代码如下:

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length=100)
    content = models.TextField()
    published_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

在该模型中,我们定义有title、author、content和published_at等属性,这些属性将会被存储在数据库中。然后我们可以在views.py文件中定义ArticleListView类,继承ListView类,来展示Article模型中所有的文章列表:

views.py代码如下:

from django.views.generic import ListView
from .models import Article

class ArticleListView(ListView):
    model = Article
    template_name = 'article_list.html'
    context_object_name = 'articles'
    ordering = ['-published_at']

在这个类中,我们定义了一些属性,包括model(模型类)、template_name(模板名称)、context_object_name(上下文名称,用于传递文章列表到模板中)和ordering(排序方式)等等。这些属性将会在ListView中被使用。

最后,我们需要在urls.py文件中将这个类和一个URL地址对应起来。代码如下:

from django.urls import path
from .views import ArticleListView

urlpatterns = [
    path('article_list/', ArticleListView.as_view(), name='article_list'),
]

这里我们将ArticleListView转换成一个可调用的函数,然后将URL地址/article_list/和这个函数对应起来。

最后,我们需要简单地编写一个article_list.html模板,用于展示所有的文章列表。代码如下:

{% extends "base.html" %}

{% block content %}
<h2>All Articles</h2>
{% for article in articles %}
    <h3>{{ article.title }}</h3>
    <h5>By {{ article.author }}, on {{ article.published_at|date:"F j, Y" }}</h5>
    <div>{{ article.content }}</div>
{% empty %}
    <p>No articles yet.</p>
{% endfor %}
{% endblock %}

在这个模板中,我们定义了一些HTML代码,用于展示文章列表中的每一个文章。我们使用了for循环来遍历所有的文章,然后在页面中展示文章的title、author、published_at和content等信息。

现在,我们可以访问/article_list/这个网址,来查看所有的文章列表了。

以上就是Django视图扩展类知识点详解的完整攻略,包括两条示例说明,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django视图扩展类知识点详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 简单的Django实现图片上传,并存储进MySQL数据库 案例——小白

    目标:通过网页上传一张图片到Django后台,后台接收并存储进数据库 真是不容易!!这个案例的代码网上太乱,不适合我,自己摸索着写,终于成功了,记录一下,仅供自己参考,有的解释可能不对,自己明白就好,哈哈哈!~!~!   1.首先用pycharm创建一个Django项目,嗯,对,这是第一步~     2. 第二步呢,改一下setting.py的设置吧,数据库…

    2023年4月9日
    00
  • django之csrf_exempt解决跨域请求的问题

    一:   from django.views.decorators.csrf import csrf_exempt # 获取微信返回的code信息 @csrf_exempt def wechat_auth(req): if req.method == ‘POST’: code = req.POST.get(‘code’) data_info = get_ac…

    Django 2023年4月12日
    00
  • django配置(一)STATIC_ROOT

    说在前面:     最近学习的视频课程也逐渐到尾声了,来记录一些django中需要注意的配置修改 MEDIA_ROOT:     在说STATIC_ROOT之前,必须得提一下MEDIA_ROOT,在配置中,当你需要在你的项目中按照你心中的目录来存储文件时,MEDIA_ROOT是必不可少的。 # 文件存储配置 MEDIA_URL = ‘/media/’ MED…

    Django 2023年4月11日
    00
  • django最快程序开发流程详解

    以下是关于“Django最快程序开发流程详解”的完整攻略。 什么是 Django? Django 是一个用 Python 编写的 Web 框架,它可以让开发者更快地创建、测试和部署高质量的 Web 应用程序。Django 的优点包括:内置的许多安全特性、ORM(Object-Relational Mapping)等基于数据模型的映射功能、轻松地管理用户身份验…

    Django 2023年5月16日
    00
  • Django 1.8.11 查询数据库返回JSON格式数据

    和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10Python2.7Django 1.8.11 返回多条数据 示例 import json from django.http import HttpResponse from django.core import serializers def db_to_json(reque…

    Django 2023年4月10日
    00
  • Python Django请求和响应对象详解

    Python Django请求和响应对象详解 Django是目前非常流行的 Python Web 框架,其中请求和响应对象是开发中经常使用的对象。了解这两个对象的属性和用法可以帮助我们更好地理解Django的工作原理。 请求对象(HttpRequest) HttpRequest是Django中最重要的对象之一,用于封装来自客户端的HTTP请求。该对象包含了H…

    Django 2023年5月16日
    00
  • Python Django的安装配置教程图文详解

    下面我将对“Python Django的安装配置教程图文详解”的完整攻略进行详细讲解,包括两条示例说明。 Python Django安装配置教程图文详解 安装Python 首先需要安装Python。前往Python官网下载最新版Python安装包,下载地址为:https://www.python.org/downloads。 下载对应平台的Python安装包…

    Django 2023年5月16日
    00
  • 在Django框架中设置语言偏好的教程

    下面是详细讲解“在Django框架中设置语言偏好的教程”的完整攻略。 步骤一:安装Django 如果你还没有安装 Django,请先安装 Django。Django 的最新版本是 3.2。你可以使用以下命令安装: pip install Django 步骤二:配置settings.py 接下来,你需要在项目的 settings.py 文件中配置语言设置。下面…

    Django 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部