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【进阶篇 】

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user=’root’, db=’wup…

    Django 2023年4月13日
    00
  • xadmin2.0(for Django2.0) 基本设置

    一、下载xadmin 1.使用安装工具安装: pip install git+git://github.com/sshwsfc/xadmin.git@django2 2.下载源码: git clone https://github.com/sshwsfc/xadmin.git# 或者将文件夹中的xadmin文件夹,放到项目目录中,然后在setting.py中…

    Django 2023年4月11日
    00
  • Django自带日志 settings.py文件配置方法

    关于“Django自带日志settings.py文件配置方法”的攻略,我可以帮您详细讲解以下几个方面: Django自带日志模块介绍 settings.py文件中配置Django日志的方式 示例说明 接下来我会从以上三个方面逐一介绍。 1. Django自带日志模块介绍 Django自带了一套简洁但灵活的日志模块,可以非常方便地帮助我们记录和追踪应用的日志信…

    Django 2023年5月16日
    00
  • python 配置uwsgi 启动Django框架的详细教程

    下面给您详细讲解如何通过配置uwsgi来启动Django框架。 一、安装uwsgi 首先需要安装uwsgi,可以通过以下命令进行安装: sudo pip install uwsgi 二、Django项目配置 接下来,需要对Django项目进行配置。假设我们的Django项目目录为/path/to/project,对应的Django应用为myapp。 首先,在…

    Django 2023年5月16日
    00
  • 【Django后台数据管理】后台数据新建或者保存,经常遇到提示This field is required

        如下图:   2、设置blan属性为True   blan=True  

    Django 2023年4月13日
    00
  • Django安装配置mysql的方法步骤

    下面我来详细讲解Django安装配置MySQL的方法步骤。 1. 下载安装MySQL 首先,我们需要下载并安装MySQL数据库。可以到MySQL官方网站下载最新版的安装包,并按照提示一步步安装即可。 2. 创建MySQL数据库 安装完成后,我们需要在MySQL中创建我们的数据库。可以使用命令行或图形界面工具进行操作。比如,使用MySQL Workbench工…

    Django 2023年5月16日
    00
  • django crontab定时执行任务

    安装 pip install django-crontab 添加app名称到 settings.py中 INSTALLED_APPS = ( ‘django_crontab’,#这个不是app的名字,必须要添加到前面,不能接着app后面添加,否则会报错 … ) 接下来创建定时任务可以分成两种,一种是执行自定义的mange.py的命令,另一种是执行自定义函…

    Django 2023年4月10日
    00
  • Django-利用paginator模块实现分页

    Django专门提供了一个paginator模块,实现分页很easy。 下面的例子引用了django官方文档:https://docs.djangoproject.com/en/1.11/topics/pagination/ Paginator实例化需要2个参数,一个是待分页的对象list(需要实现count方法或者__len__方法),另一个是每页数量。 …

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