Django视图扩展类知识点详解

yizhihongxing

首先我们来介绍一下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 url标签详解

    Django中提供了一个url标签,它可以用于生成URL,这对于模板中的链接很有用。url标签可以帮助我们在模板中对应用程序中的视图进行链接,因此我们可以展示数据无需手动构建URL。 url语法: {% url 'url_name' arg1 arg2 … %} url_name: URLconf中定义的名称(或视图)。 arg1, …

    Django 2023年3月12日
    00
  • Django学习——用户自定义models问题解决

    一、问题在Django中使用自定义的model的时候会出现下面的错误 ERRORS: auth.User.groups: (fields.E304) Reverse accessor for ‘User.groups’ clashes with reverse accessor for ‘MyUser.groups’. HINT: Add or change…

    Django 2023年4月12日
    00
  • django-pymysql-封装的sql使用

    封装的sql import pymysql def get_list(sql,args): conn = pymysql.connect(host=’127.0.0.1′, port=3306, user=’root’, passwd=”, db=’s4db65′, charset=’utf8′) cursor = conn.cursor(cursor=p…

    Django 2023年4月13日
    00
  • Django中shell命令的使用

    Django中的shell命令是一种交互式命令行工具,可以在Django应用程序的上下文中执行Python代码。使用shell命令可以方便地访问和修改Django应用程序的数据和功能。 以下是使用shell命令的完整攻略: 打开Django shell 在命令行中进入Django应用程序的根目录,然后运行以下命令: python manage.py shel…

    Django 2023年5月15日
    00
  • Django利用Cookie实现反爬虫的例子

    当涉及到爬虫或网站安全时,我们经常会用到Cookie。Django是一个流行的Python Web框架,它使用安全的Cookie来防止爬虫访问网站。下面将演示两个例子,用Django利用Cookie来防止爬虫访问网站的方式。 示例1:使用Django中的装饰器 在Django中,我们可以使用装饰器来检查是否存在正确的Cookie。这里有一个示例,当检测到没有…

    Django 2023年5月15日
    00
  • Django怎么使用原生SQL查询数据库

    这篇文章主要介绍“Django怎么使用原生SQL查询数据库”,在日常操作中,相信很多人在Django怎么使用原生SQL查询数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Django怎么使用原生SQL查询数据库”的疑惑有所帮助!接下来,请跟着小编一起来学习吧! Django 提供了两种方式来执行原生 SQL 代码。 一种是…

    Django 2023年4月13日
    00
  • Django框架之drf:7、认证组件,权限组件,频率组件,过滤的多种用法,排序,分页,

    Django框架之drf 一、认证组件 简介: ​ 登录认证的限制 ​ 认证组件是drf框架给我们提供的认证接口,它能够在请求进入视图函数/类前进验证(例如:认证用户是否登录),对不符合认证的请求进行拦截并返回校验失败的信息 1、认证组件使用步骤 模块地址: from rest_framework.authentication import BaseAuth…

    2023年4月10日
    00
  • django使用auth模块进行身份认证

    https://docs.djangoproject.com/zh-hans/2.0/topics/auth/default/#authentication-in-web-requests django认证模型系统是django自带,默认配置文件在settings.py文件当中。这个项目在INSTALLED_APPS setting里面由两个部分组成,分别是…

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