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框架学习:二十一.admin列表优化和排序

    今天学习一下列表优化和排序 ModelAdmin django的options.py里面 ModelAdmin类定义的参数可以设置admin后台列表页面,相关的参数如下      排序字段 后台列表页面,如果想按某个字段排序,可以加个ordering参数      刷新页面后,就是降序了 列表分页 列表页默认是设置的100个记录,我们也可以修改下设置成默认每…

    2023年4月10日
    00
  • Python – Django – ORM 操作表

    ORM 的对应关系: 类        —>    数据库表对象     —>    数据库行属性     —>    字段   操作数据库表     —>     创建/删除/修改表操作数据库行     —>     数据的增删改查    首先需要自己手动创建一个数据库 在 mysite 的 setting…

    Django 2023年4月10日
    00
  • django基础知识之Response对象:

    在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调用模板,直接返回数据 #coding=utf-8 from django.http import HttpResponse def index(request): return HttpRe…

    Django 2023年4月13日
    00
  • django 实现websocket

    一、简述:django实现websocket,之前django-websocket退出到3.0之后,被废弃。官方推荐大家使用channels。 channels通过升级http协议 升级到websocket协议。保证实时通讯。也就是说,我们完全可以用channels实现我们的即时通讯。而不是使用长轮询和计时器方式来保证伪实时通讯。 他通过改造django框架…

    Django 2023年4月12日
    00
  • Django视图层

    目录 Django视图层 一、视图层之必会三板斧 二、JsonResponse对象 三、request对象 四、视图层之FBV与CBV 五、CBV源码剖析 六、虚拟环境 Django视图层 一、视图层之必会三板斧 用来处理请求的视图函数都必须返回HttpResponse对象 # 完全正确 class HttpResponse: pass return Htt…

    Django 2023年4月10日
    00
  • Apache部署Django项目图文详解

    下面是详细讲解“Apache部署Django项目图文详解”的完整攻略。 1. 安装Apache和mod_wsgi模块 在Ubuntu系统中可以通过以下命令来安装Apache Web服务器: sudo apt-get update sudo apt-get install apache2 在安装Apache后,我们需要安装mod_wsgi模块来支持Django…

    Django 2023年5月16日
    00
  • 详解Django Form表单API

    Django的Form表单API是一种快速构建表单的方式,可以方便地处理用户提交的数据。以下是Django Form表单API的完整攻略,包括表单的创建、渲染、验证和处理。 创建表单 要创建一个表单,我们可以使用Django的forms模块创建一个继承自django.forms.Form的类。在表单类中,我们可以定义表单的字段和验证规则。以下是一个简单的表单…

    Django 2023年3月13日
    00
  • Python Django ORM与模型详解

    “Python Django ORM与模型详解”的完整攻略可以分为以下几个部分: 1. 概述 Django是一套MVC框架,它提供了ORM(Object-Relational Mapping)技术,ORM可以将数据库中的表结构映射成Python类,这样我们在Python中就可以使用类来操作数据库。 2. 配置 要使用Django ORM,我们首先需要在set…

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