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

yizhihongxing

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实现api跨域请求访问

    第一步:安装 django-cors-headers pip install django-cors-headers   第二步:配置settings.py文件 ———————–和前端配合指定可以跨域的用户—————————- from corsheaders.defaults import …

    Django 2023年4月11日
    00
  • Django零基础入门之常用过滤器详解

    Django零基础入门之常用过滤器详解 在Django开发中,过滤器是一个十分重要的概念。过滤器可以用来对数据进行处理、格式化和筛选,让数据在呈现给用户之前更加友好和清晰。 本篇文章将介绍几个常用的Django过滤器,分别是 date、default、length、slice等。 1. date 过滤器 date 过滤器可以用来对日期时间格式进行转换和格式化…

    Django 2023年5月16日
    00
  • django导入环境变量 Please specify Django project root directory

    在创建了套层的文件后,django需要的解释器也需要重新设置,普通的设置明显不能用,那么该如何解决呢 下图:    点击OK       依次点击 apply 和 ok  

    Django 2023年4月13日
    00
  • Python Django 后台管理之后台模型属性详解

    下面我来详细讲解一下“Python Django 后台管理之后台模型属性详解”的攻略。 一、介绍 在Django中,模型是创建数据库表的关键,而后台管理是我们在开发实践中需要的一个基础模块。因此,了解后台管理中的各种模型属性对于有效管理数据来说是非常重要的。 二、模型属性 下面介绍一下在Django中后台模型常用的属性。 1. verbose_name和ve…

    Django 2023年5月16日
    00
  • Django解决datetime类型数据不能json序列化问题

      场景: 通常数据库的时间字段都是自动添加,或者datetime形式填入,这时候取出来,如果你不循环把它变成字符串,就会报错Object of type ‘datetime’ is not JSON serializable,所以通过一个继承类方式,来改变datetime类型数据序列化问题,会很方便。   写法: import datetime class…

    Django 2023年4月12日
    00
  • Python Django Cookie 简单用法解析

    下面是对“Python Django Cookie 简单用法解析”的详细讲解,包括两条示例说明: Python Django Cookie 简单用法解析 什么是Cookie Cookie是指存储在客户端中的一种数据结构,主要用于记录用户的一些状态信息,如语言、购物车、登录等信息。当用户再次访问网站时,浏览器能够将Cookie信息自动发送到服务器,服务器可以根…

    Django 2023年5月16日
    00
  • django基于mysql实现图片上传与打开

    1:在models.py文件中建立数据表  from django.db import models  class User(models.Model): img = models.ImageField(upload_to=’img’,null=True)   因为我是后来添加的图片字段,所以需要在里面加个null=True,至于Upload_to是文件板寸…

    Django 2023年4月13日
    00
  • JSON和Django内置序列化

    JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * JSON 具有自我描述性,更易理解 * JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSO…

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