达内教育Django全套教程

本文围绕Django展开,介绍其组件、用途、版本及安装方式。详细讲解项目结构、URL与视图函数、路由配置、请求和响应处理。还涉及静态文件配置、应用创建与分布式路由。重点阐述模型层及ORM,包括配置MySQL、模型定义、ORM操作,如查询、更新、删除等,以及聚合查询和原生数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django

1.Django 介绍

1.1 组件

Django 包含的组件如下:

  • 基本配置文件/路由系统
  • 模型层(M)/模板层(T)/视图层(V)
  • Cookies 和 Session
  • 分页及分发邮件
  • Admin 管理后台

1.2 用途

Django 能够实现所有 HTTP 请求处理。

  • 网站/微信公众号/小程序后端开发
  • 人工智能平台融合

1.3 版本

1.4 安装

1.4.1 在线安装
pip install django==2.2.12
1.4.2 离线安装
# 将安装包下载到本地
# 解压缩并进入到解压缩后的目录
# 执行如下命令进行安装
python setup.py install
# 执行如下命令检查是否安装成功
pip freeze | grep -i 'Django'

2.Django 的项目结构

2.1 创建项目

  • 成功安装 Django 后,虚拟机终端会有 django-admin 命令

  • 执行 django-admin startproject [项目名] 即可创建出对应项目的文件夹

    # 创建 mysite1 项目
    django-admin startproject mysite1
    

2.2 启动服务

  • 启动[测试开发阶段]
    1. 终端 cd 进入到项目文件夹

    2. 进入到项目文件夹后,执行 python manage.py runserver [端口] 启动 django 服务,端口不指定即为 8000

      image-20230807225358311

    3. 浏览器访问 http://127.0.0.1:8000 可看到 django 的启动页面。

      image-20230807225440250

2.3 关闭服务

  • 关闭服务[测试开发阶段]

    • 方式一[在runserver启动终端下]:

      执行 ctrl + c 可退出 Django 服务。

    • 方式二[在其他终端下]:

      执行 sudo lsof -i:8000 查询出 Django 的进程 id

      执行 kill -9 Django 进程的 id

      image-20230807225907267

2.4 项目结构解析

image-20230807230100663

mysite
├── db.sqlite3 [Django默认的数据库,sqlite]
├── manage.py
└── mysite
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-310.pyc
    │   ├── settings.cpython-310.pyc
    │   ├── urls.cpython-310.pyc
    │   └── wsgi.cpython-310.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py

manage.py

包含项目管理的子命令,如:

# 启动服务
python manage.py runserver
# 创建应用
python manage.py startapp
# 生成迁移文件
python manage.py makemigrations
# 数据迁移
python manage.py migrate
...
# 直接执行 python manage.py 会列出所有Django的子命令

image-20230807230440939

项目同名文件夹 - mysite/mysite

  • __init__ : Python 包的初始化文件。
  • wsgi.py : web 服务网关配置文件,Django 正式启动时,需要用到。
  • urls.py : 项目的主路由配置,Http 请求进入 Django 时,优先调用该文件。
  • settings.py : 项目的配置文件,包含项目启动时需要的配置。

项目配置文件 - settings.py

  • settings.py 包含了 Django 项目启动时所有的配置项。

  • 配置项分为公有配置和自定义配置。

  • 配置项格式:BASE_DIR = ‘xxxx’。

  • 公有配置,Django官方提供的基础配置,可到如下网站查询。

    https://docs.djangoproject.com/en/2.2/ref/settings/
    
     

    ALLOWED_HOSTS

    设置允许访问到本项目的 host 头值。

    • 示例:如果要在局域网其他主机也能访问此主机的Django服务,启动方式如下:

      (1) python3 manage.py runserver 0.0.0.0:5000

      (2) 指定网络设备如果内网环境下其他主机想正常访问该站点,需要添加 ALLOWED_HOSTS = [‘内网IP’]

      image-20230807232602075

      在 windows 主机访问虚拟机启动的 Django 项目,显示主机ip应该添加到 ALLOWED_HOSTS,在 settings.py 添加后,再次访问,页面能够被正常文件。

      image-20230807232951884

    LANGUAGE_CODE

    设置项目的页面展示语言,简体中文设置为:zh-Hans

    TIME_ZONE

    用于指定当前服务端时区,默认为格林威治时间(UTC),中国地区设置为 Asia/Shanghai

    BASE_DIR

    用于绑定当前项目的绝对路径(动态计算出来的),所有文件夹都可以依赖此路径。

    DEBUG

    用于配置 Django 项目的启动模式,取值:True,表示开发环境中使用;False,表示当前项目运行在生产环境中。

    INSTALLED_APPS

    指定当前项目中安装的应用列表。

    MIDDLEWARE

    用于注册中间件。

    TEMPLATES

    用于指定模板的配置信息。

    DATABASES

    用于指定数据库的配置信息。

    ROOT_URLCONF

    用于配置主 url 配置,ROOT_URLCONF = 'mysite.urls'

3.URL 和 视图函数

3.1 URL

定义:即统一资源定位符 Uniform Resource Locator

作用:用来表示互联网上某个资源的地址

URL的一般语法为:

# portocol:协议(http、https、file)
# hostname:主机名
# port:端口
# path:路由地址
# query:查询的参数,可有多个参数,用 & 隔开,每个参数的名和值用 = 隔开。
# fragment:信息片段,字符串,用于指定网络资源中的片段。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
protocol://hostname[:port]/path[?query][#fragment]

例如:

# 直接定位到页面指定信息片段的位置
https://docs.djangoproject.com/en/4.2/#how-the-documentation-is-organized

3.2 处理 URL 请求

以URL(http://127.0.0.1:8000/page/2003)为例。

  1. Django 从配置文件中根据 ROOT_URLCONF 找到主路由文件;默认情况下,该文件为项目同名目录下的 urls.py
  2. Django 加载主路由文件中的 urlpatterns 变量[包含很多路由的数组]。
  3. 依次匹配 urlpatterns 中的 path ,匹配到第一个合适的中断后续匹配。
  4. 匹配成功-调用对应的视图函数处理请求,返回响应。
  5. 匹配失败-返回 404 响应。

主路由 - urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('page/2023', views.page_2023),
    path('page/2024', views.page_2024)
]

3.3 视图函数

定义:视图函数是用于接收一个浏览器请求(HttpRequest对象)并通过HttpResponse对象返回响应的函数,此函数可以接收浏览器请求并根据业务逻辑返回响应的响应内容给浏览器。

语法:

def xxx_view(request[,其他参数]):
    return HttpResponse 对象

样例:

from django.http import HttpResponse

def page_2023(request):
    html = "<h1>这是第一个页面</h1>"
    return HttpResponse(html)

image-20230809231829556

4.路由配置

settings.py 中的 ROOT_URLCONF 指定了主路由配置列表 urlpatterns 的文件位置。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('page/2023/', views.page_2023),
    path('page/2024/', views.page_2024),
    ... # 配置URL和视图函数
]

4.1 path 函数

path函数定义

# 导入
from django.urls import path
# 语法
path(route,views,[name=])
# 参数
route:字符串类型,匹配请求路径
views:指定路径所对应视图函数的名称
name:为路由地址起别名,在模板中地址反向解析时使用

4.2 path 转换器

# 语法
<转换器类型:自定义名>
# 作用
如果转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数
# 例如
path('page/\<int:page>',views.xxx)

转换器列表

转换器类型 作用 样例
str 匹配除了’/‘之外的非空字符串 v1/users/<str:username>匹配 /v1/users/guoxiaonao
int 匹配0或者任意正整数,返回一个int page/<int:page> 匹配 /page/100
slug 匹配任意由 ASCII字母或数字以及连字符和下划线组成的短标签 detail/<slug:sl> 匹配 /detail/this-is-django
path 匹配非空字段,包括路径分隔符’/’ v1/users/<path:ph> 匹配 /v1/goods/a/b/c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值