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

创建一个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.xdnf.cn/news/17354.html

相关文章:

  • 【js】判断异步函数的返回值要加await
  • 大语言模型提示工程与应用:大语言模型对抗性提示安全防御指南
  • springboot 2.4跨域变化和swagger结合的问题
  • orcad的操作(1)
  • BGP笔记
  • 微积分 | 外微分
  • vue+flask山西非遗文化遗产图谱可视化系统
  • 通过 SCP 和 LXD 配置迁移 CUDA 环境至共享(笔记)
  • AI编程工具 | Trae介绍
  • 智能的本质
  • 实数与复数及欧拉公式关系
  • 卷板矫平机:金属板材的“脊椎按摩师”
  • 代理人工智能的隐藏威胁
  • 数学学习 | 高数、线代、概率论及数理统计荐书
  • 人脸情绪检测数据集-9,400 张图片 智能客服系统 在线教育平台 心理健康监测 人机交互优化 市场研究与广告 安全监控系统
  • ADB(Android Debug Bridge)—— Android调试桥
  • day22|学习前端ts语言
  • 资深全栈工程师面试题总结
  • DAY35打卡
  • 吴恩达机器学习笔记(4)—多变量线性回归:梯度下降(附代码)
  • C#异步编程双利器:异步Lambda与BackgroundWorker实战解析
  • 2025-08-09通过授权码的方式给exe程序充值
  • 二十、MySQL-DQL-条件查询
  • 本科毕业论文怎么引用github里面数据集
  • SkyWalking-3--Java Agent开发和集成示例
  • 在JVM调优时,你关注哪些指标?
  • Arm Development Studio 安全通告:CVE-2025-7427
  • 数据结构day06
  • 【工具变量】全国省级农业保险保费收入与赔付支出数据更新(2001-2023年)
  • JVM常用参数有哪些?