前言
从这篇文章开始,我将给大家介绍Python中的一个框架 Django
我将从基础开始一步一步带领大家深入了解Django框架并完成实战案例
一、Django是什么?
Django 是一个 免费、开源、高级 的 Python Web 框架 。它的核心目标是使开发复杂的、数据库驱动的网站变得 快速、简单和安全。
Django 遵循 "Don't Repeat Yourself" 的设计哲学,强调代码复用和组件化。它奉行 "包含电池" 的理念,这意味着它提供了开发 Web 应用所需的绝大多数功能,开发者无需重新发明轮子,可以直接使用或进行少量配置即可。
二、核心特性
1.快速开发: Django 的设计哲学和内置功能(如 ORM、Admin 后台、通用视图、表单处理)极大地加速了开发流程。
2.安全: Django 非常注重安全,内置了防护常见 Web 攻击的机制,例如:
-
SQL 注入防护: ORM 自动处理参数化查询。
-
跨站脚本防护: 模板系统默认转义输出。
-
跨站请求伪造防护: 内置 CSRF 令牌机制。
-
点击劫持防护: 支持 X-Frame-Options。
-
安全头部: 可方便配置安全相关的 HTTP 头。
3.可扩展性强: Django 采用松耦合的设计,各个组件(如模型、视图、模板)相对独立。它支持海量访问的架构设计,许多大型网站(如 Instagram, Pinterest, Disqus)都使用 Django。
4.功能齐全的 ORM:
-
对象关系映射 让你用 Python 类来定义数据库模型,无需直接编写 SQL。
-
支持多种数据库后端(PostgreSQL, MySQL, SQLite, Oracle 等),切换方便。
-
提供强大的数据库查询 API。
-
自动处理数据库迁移(
makemigrations
,migrate
)。
5.自带 Admin 后台: 只需几行代码,就能根据你的数据模型自动生成一个功能强大的后台管理界面,用于管理网站内容。这是 Django 最具标志性的特性之一,极大地方便了内容管理。
6.清晰的 MVT 架构:
-
Model: 负责数据结构和数据库交互(ORM)。
-
View: 负责业务逻辑。接收 HTTP 请求,处理数据(通常涉及 Model),然后返回 HTTP 响应(通常是一个渲染后的 Template)。
-
Template: 负责展示层(HTML)。使用 Django 的模板语言(DTL)或第三方引擎(如 Jinja2)来动态生成 HTML。
-
URL Dispatcher: 优雅的 URL 设计,通过 URL 配置(
urls.py
)将不同的 URL 模式映射到对应的视图函数/类。
7.强大的表单处理: 内置的表单系统简化了表单的创建、验证、处理和渲染,并与 Model 紧密结合。
8.国际化与本地化: 内置支持多语言翻译和本地化格式(日期、时间、数字)。
9.强大的社区和生态系统: 拥有庞大且活跃的社区,提供了极其丰富的第三方包(Django Packages),覆盖了几乎所有的 Web 开发需求(认证、REST API、支付、搜索、缓存等)。
10.完善的文档: Django 以其 卓越、详尽的官方文档 而闻名,对新手和资深开发者都非常友好。
三、使用
1.安装Django
python
pip install django
2.创建项目
Django种项目会有一些默认的文件和默认的文件夹
终端输入 django-admin startproject 项目名称 创建新项目
python
Cangku
├── manage.py [管理项目文件,例如:运行、类自动生成数据表]
└── Cangku
├── __init__.py
├── settings.py [项目配置文件,例如:连接那个数据... ]
├── urls.py [根路由,URL和函数的对应关系 /x1/login ->do_login ]
├── asgi.py [异步运行项目,编写socket,处理网络请求]
└── wsgi.py [同步运行项目,编写socket,处理网络请求]
3.创建应用(app)
一个项目类似于是一个架子,但是真正起作用的还是app.在终端进入到项目所在的路径,然后执行命令,创建一个新的app
python
python manage.py startapp [app名称]
4.运行
通过命令行的方式:
python
python manage.py runserver
可以在本地访问你的网站,默认端口号是8000,这样就可以在浏览器中通过http://127.0.0.1:8000/来访问你的网站啦。如果想要修改端口号,那么在运行的时候可以指定端口号,python manage.py runserver 9000这样就可以通过9000端口来访问啦。另外,这样运行的项目只能在本机上能访问,如果想要在其他电脑上也能访问本网站,那么需要指定ip地址为0.0.0.0。示例为:python manage.py runserver 0.0.0.0:8000。
5.project与app的关系
app是django项目的组成部分。一个app代表项目中的一个模块,所有URL请求的响应都是由app来处理。比如豆瓣,里面有图书,电影,音乐,同城等许许多多的模块,如果站在django的角度来看,图书,电影这些模块就是app,图书,电影这些app共同组成豆瓣这个项目。因此这里要有一个概念,django项目由许多app组成,一个app可以被用到其他项目,django也能拥有不同的app。