当前位置: 首页 > news >正文

创建一个django项目

Django 详细介绍

Django 是一个高级 Python Web 框架,用于快速开发安全、可扩展的网站和 Web 应用程序。它遵循 MVT(Model-View-Template) 架构模式(类似于 MVC),并提供了许多内置功能,如 ORM(对象关系映射)、认证系统、管理后台等,使开发者可以专注于业务逻辑而非底层实现。

1. Django 的核心特点

(1)全栈式框架

Django 提供了构建 Web 应用所需的大部分组件:

  • ORM(对象关系映射):用 Python 类定义数据库模型,无需直接写 SQL。

  • 模板引擎:动态生成 HTML,支持模板继承和过滤器。

  • 表单处理:自动生成表单,验证用户输入。

  • 认证系统:用户注册、登录、权限管理。

  • Admin 后台:自动生成管理界面,方便管理数据。

  • 路由系统:URL 映射到视图函数/类。

  • 中间件:处理请求/响应的全局逻辑(如 CSRF 防护)。

(2)DRY(Don't Repeat Yourself)原则

Django 鼓励代码复用,减少重复代码,提高开发效率。

(3)安全性

  • CSRF(跨站请求伪造)防护:自动处理表单安全。

  • XSS(跨站脚本攻击)防护:默认转义模板变量。

  • SQL 注入防护:ORM 自动转义 SQL 查询。

  • 用户密码哈希存储:避免明文存储密码。

(4)可扩展性

  • 支持 缓存(Redis、Memcached)。

  • 支持 异步任务(Celery、Django Channels)。

  • 支持 REST API(Django REST Framework)。

(5)丰富的生态系统

  • Django REST Framework (DRF):构建 RESTful API。

  • Django CMS:内容管理系统。

  • Django Allauth:社交账号登录(Google、GitHub 等)。

  • Django Celery:异步任务处理。

2. Django 的架构(MVT 模式)

Django 使用 Model-View-Template(MVT) 架构:

组件 作用
Model 定义数据结构(数据库表),通过 ORM 操作数据库
View 处理业务逻辑(类似 MVC 中的 Controller)
Template 渲染 HTML 页面(类似 MVC 中的 View)

工作流程

  1. 用户请求 → URL 路由 → 匹配对应的 View

  2. View 处理请求,可能查询 Model(数据库)。

  3. View 返回数据给 Template 渲染 HTML。

  4. 最终 HTML 返回给用户。


3. Django 的安装与基本使用

(1)安装 Django

pip install django

(2)创建 Django 项目

django-admin startproject myproject

项目结构:

text

复制

下载

myproject/
│
├── manage.py          # 项目管理脚本
└── myproject/├── __init__.py├── settings.py    # 项目配置(数据库、静态文件等)├── urls.py       # 主路由配置└── wsgi.py # WSGI 服务器配置└── asgi.py # ASGI 服务器配置       

(3)运行开发服务器

python manage.py runserver

访问 http://127.0.0.1:8000/ 可以看到 Django 欢迎页面。

4. 创建一个简单的 Django 应用

(1)创建应用

python manage.py startapp myapp

应用结构:

myapp/
│
├── migrations/       # 数据库迁移文件
├── __init__.py
├── admin.py         # 注册模型到 Admin 后台
├── apps.py          # 应用配置
├── models.py        # 定义数据模型
├── tests.py         # 单元测试
└── views.py         # 视图函数

(2)定义 Model(数据库表)

# myapp/models.py
from django.db import modelsclass Blog(models.Model):title = models.CharField(max_length=100)content = models.TextField()created_at = models.DateTimeField(auto_now_add=True)def __str__(self):return self.title

(3)生成并应用数据库迁移

python manage.py makemigrations
python manage.py migrate

(4)创建 View(业务逻辑)

# myapp/views.py
from django.shortcuts import render
from .models import Blogdef blog_list(request):blogs = Blog.objects.all()return render(request, "blog_list.html", {"blogs": blogs})

(5)创建 Template(HTML 页面)

<!-- myapp/templates/blog_list.html -->
<!DOCTYPE html>
<html>
<head>&
http://www.dtcms.com/a/323661.html

相关文章:

  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(15):文法+单词第5回
  • 生产环境某业务服务JVM调优总结
  • DAY35打卡
  • [IOMMU]面向芯片/SoC验证工程的IOMMU全景速览
  • FMS 2025存储峰会获奖技术全景解读
  • 【linux基础】Linux命令提示符解析与操作指南
  • c++ 容器vector基础
  • 北斗变形监测技术应用与案例解析
  • RK3568 U盘/TF卡镜像更新
  • Mysql笔记-系统变量\用户变量管理
  • 学习嵌入式第二十四天
  • 【Python 语法糖小火锅 · 第 1 涮】
  • Vulnhub----Beelzebub靶场
  • 每周算法思考:栈与队列
  • 使用lightGCN完整训练用户 + 商品向量的 3 步指南
  • 在JVM调优时,你关注哪些指标?
  • 裸露土堆识别准确率↑32%:陌讯多模态融合算法实战解析
  • 20250808组题总结
  • C++11中的移动语义
  • Python训练营打卡Day27-类的定义和方法
  • 【后端】Java Stream API 介绍
  • C++11 ---- 线程库
  • 机器学习(西瓜书)学习——绪论
  • 编译技术的两条演化支线:从前端 UI 框架到底层编译器的智能测试
  • 通过MQTT实现OTA升级方案
  • Linux-Redhat9.5静默安装Oracle19.25单实例教程【参照官方文档,超级详细】
  • 【35】C#实战篇——StopRecordingTimer_Tick事件函数中,解绑函数自己,那么该函数会立即结束吗?还会继续执行该函数中剩余部分吗?
  • windows、linux应急响应入侵排查
  • Oracle数据库重启后打开异常状态的检查步骤
  • 模拟人脑处理文本——从分句到分词,从段落到时间线叙事