Django框架组成结构、基本概念与文件功能分析

Django 是一个高效、稳定、功能全面的 Python Web 框架,它已经成为了市面上最受欢迎的 Web 框架之一,广泛用于各种大中小型的 Web 应用程序开发。Django 的架构设计思想清晰,易于理解和使用,也便于实现多种 Web 应用程序的构建。

在这里,我们将详细讲解 Django 框架的组成结构、基本概念和文件功能,以及通过两个示例说明来让大家更好地理解 Django 框架的使用。

1. Django 框架的组成结构

Django 框架组成结构分为以下几个模块:

模型(Model)

模型是 Django 框架中用于操作数据库的组件。它可以定义一张数据库表格,每一个表格可能包含不同的字段。模型的定义存放在一个 Python 文件中。

视图(View)

视图是 Django 框架中用于处理 HTTP 请求并返回 HTTP 响应的组件。视图函数通常是在视图文件中实现的 Python 函数。

模板(Template)

模板是 Django 框架中用于展示后端处理的数据的组件。 这是一个类似于 HTML 的文本文件,里面包含了将被渲染的内容和一些代码逻辑。

URL 分发器(URL Dispatcher)

URL 分发器是 Django 框架中进行 URL 路由和控制的组件。Django 通过 URL 与前端进行交互, 实现对视图的调用和响应。

处理器(Middleware)

处理器是位于视图和 URL 分发器之间的一层。 它能够拦截整个请求和响应过程,可以用于检查请求、过滤响应,或者更改请求和响应的内容。

2. Django 框架的基本概念

Django 框架中有几个基本概念,理解这些概念对于 Django 开发至关重要。

APP 应用

在 Django 中,应用是指一组实现某种业务功能的模型、 视图和模板的集合。一般来说,一个项目能够包含多个应用。 Django 中的应用是工程的组成单元之一,它们可以独立运行,也可以和其他应用进行组合使用。

URL 路由

在 Django 中,URL 路由是指进行请求分发的过程,通过 URL 路由实现从用户发起的 HTTP 请求进入到相应的视图函数的调用,在 Django 中路由是通过 URLConf 进行配置的。

视图函数

在 Django 中,视图函数与 URL 路由密切相关,视图函数的作用是处理 HTTP 请求并返回 HTTP 响应。 在视图中可以进行查询数据库,编排模板等诸多操作。

数据库

Django 中内置了多种数据管理工具,无需自己编写 SQL 代码,即可轻松管理各种数据库。 Django 中支持 MySQL、 PostgreSQL 等主流数据库。

3. Django 框架中主要的文件和其功能

Django 框架中有很多重要的文件,以下是其中最常用的文件及其功能:

settings.py

Django 项目的重要配置文件。由于 Django 框架包含了非常多的功能,因此需要在项目中进行一些常规的配置,如数据库、静态文件、模板等。在这个文件里可以配置全局的 Django 项目设置。

urls.py

URLconf 文件中定义了所有的 URL 模式和与之相关的视图函数,该文件可以看作是一个视图和模板的映射表。在 Django 框架中,URLConf 的定义是按照 urlspatts (URL 模式)和对应的处理函数(视图)的形式进行的。

wsgi.py

当 Web 服务器(如 Apache 或 Nginx)向 Django 应用发送一个请求时,通过 wsgi.py 文件将请求传输到 Django 应用。 它是部署 Django 应用的关键。

manage.py

这是一个方便管理 Django 项目的命令行工具。可以通过 python manage.py 命令执行 Django 项目中的一些常用操作,如创建数据库、安装应用等。

4. 示例说明:创建一个 Django 项目和应用程序

创建项目

先创建一个名为 myproject 的 Django 项目:

django-admin startproject myproject

运行上述命令后,会在当前工作目录下创建一个名为 myproject 的文件夹,其中包含了一个名为 settings.py 的主配置文件,以及其他一些默认配置文件。

创建应用程序

接下来,我们来创建一个名为 bookstore 的应用程序:

cd myproject
python manage.py startapp bookstore

这个命令将会在 myproject 下创建一个名为 bookstore 的目录,其中包含了 bookstore 应用程序的模型、 视图和模板代码。

修改 settings.py 配置

在 myproject/settings.py 文件中将 bookstore 应用程序添加进 INSTALLED_APPS 列表:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'bookstore',  # 将 bookstore 加入 INSTALLED_APPS
]

创建简单的视图

编辑 bookstore/views.py 文件,添加以下代码:

from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello World!")

配置 URL

编辑 myproject/urls.py 文件,添加以下代码:

from django.urls import path
from bookstore.views import index

urlpatterns = [
    path('', index),
]

运行 Django 服务器

通过以下命令运行 Django 服务器:

python manage.py runserver

访问 Django 网站

在浏览器中输入 http://127.0.0.1:8000/,便可以看到我们的 Django 网站的首页了。

5. 示例说明:创建 Blog 应用

接下来创建一个名为 Blog 的应用。

创建应用

python manage.py startapp blog

配置 URL

在 blog 目录下新建 urls.py 文件,添加以下代码:

from django.urls import path
from blog.views import index

urlpatterns = [
    path('', index),
]

创建模型

在 blog/models.py 文件中添加以下代码:

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add=True)
    author = models.CharField(max_length=50)

在数据库中创建表

python manage.py makemigrations blog # 让 Django 知道我们在模型中有一些变更
python manage.py migrate blog # 创建表到数据库

创建视图

在 blog/views.py 文件中添加以下代码:

from django.http import HttpResponse
from django.template import loader

from .models import Post

def index(request):
    latest_post_list = Post.objects.order_by('-created_time')[:5]
    template = loader.get_template('blog/index.html')
    context = {
        'latest_post_list': latest_post_list,
    }
    return HttpResponse(template.render(context, request))

创建模板

在 blog/templates/blog 目录下创建 index.html 文件, 添加以下代码:

{% if latest_post_list %}
<ul>
{% for post in latest_post_list %}
    <li>{{ post.title }}</li>
{% endfor %}
</ul>
{% endif %}

修改 settings.py 配置

在 settings.py 文件中添加以下配置项:

TEMPLATES = [
    {
        # ...
        'APP_DIRS': True,
        # ...
    },
]

敲击 python manage.py runserver 运行网站,访问 http://127.0.0.1:8000/blog/ 可以看到博客文章列表了。

以上是 Django 框架组成结构、基本概念与文件功能分析的完整攻略及其示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django框架组成结构、基本概念与文件功能分析 - Python技术站

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

相关文章

  • 第一篇-Django建立数据库各表之间的联系(上)

    多表操作(一对多)   遇到的问题: 执行python manage.py makemigrations后报如下错误   TypeError: __init__() missing 1 required positional argument: ‘on_delete’ 这是外键导致的, 修改外键连接代码如标红部分。 class Book(models.Mod…

    Django 2023年4月11日
    00
  • python中的django是做什么的

    Django 是 Python 的一个流行的 Web 框架,它提供了一个高效且易于使用的开发环境,用于简化 Web 应用程序的创建和维护。Django 提供了许多有用的功能,使得开发 Web 应用程序变得更加快速、更加简便。 Django 可以帮助我们快速构建复杂的 Web 应用程序。其主要功能包括: URL 路由:Django 可以轻松地映射 URL 到应…

    Django 2023年5月15日
    00
  • 在 Windows 下搭建高效的 django 开发环境的详细教程

    那我就为您提供一份在 Windows 下搭建 Django 开发环境的完整攻略。 步骤1:安装 Python 首先,您需要下载和安装 Python。从官方网站 python.org 下载并安装适合您的操作系统的 Python 版本。 步骤2:安装 pip 安装 Python 后,您需要安装 pip,它是 Python 的包管理器。在 Windows 上,您可…

    Django 2023年5月16日
    00
  • Django之Model操作

    一、字段 AutoField(Field) – int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) – bigint自增列,必须填入参数 primary_key=True 注:当model中如果没有自增列,则自动会创建一个列名为id的列 from django.db import models cla…

    Django 2023年4月13日
    00
  • python笔记-20 django进阶 (model与form、modelform对比,三种ajax方式的对比,随机验证码,kindeditor)

    1、model的功能 1.1 创建数据库表 1.2 操作数据库表 1.3 数据库的增删改查操作 2、创建数据库表的单表操作 2.1 定义表对象 class xxx(models.MODEL) 2.2 定义字段   CharField EmailField TextField IntegerField AutoField BooleanField DateFi…

    Django 2023年4月13日
    00
  • Django学习笔记:django orm extra

    extra 在django orm中使用复杂的sql语句extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None) 有些情况下,Django 的查询语法难以简练地表达复杂的 WHERE 子句。对于这种情况,Django 提供了 extr…

    Django 2023年4月9日
    00
  • Django缓存机制–rest_framework中节流源码使用的就是django提供的缓存api

    一、配置缓存  https://www.jb51.net/article/124434.htm 二、缓存全站、页面、局部   三、自我控制的简单缓存API API 接口为:django.core.chache 存接口:cache.set(key, value, time_out) 取接口:cache.get(key) django中的低层次缓存API 有些时…

    Django 2023年4月10日
    00
  • windows10+apache2.4+python3.6部署Django2.2.4项目

    刚从家回来,老师让写专利,就开始准备写,初稿交给老师后,把我说了一顿,我就想着回去改呀,然后。。。老师找到了我,说是食品院那急需一个展示数据的平台,然我尽快干出来,我也是菜鸟啊,就没单独干过呀,即使是一个展示数据,上一次的海底捞的还是师兄搭好框架,我们在上面改的,也遇到了不少坑,详见我的github:http://JadenFK.github.io 还好前几…

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