Django 项目开发整体步骤(0 开始)

news/2025/11/3 22:59:42/文章来源:https://www.cnblogs.com/LungGiyo/p/19188500

Django 项目开发整体步骤-基础版


1. 环境准备

   - 安装 Python(推荐 3.10+)。
   - 创建虚拟环境(venv 或 virtualenv)。
# Linux / Mac
mkdir django_demo
cd django_demopython3 -m venv myenv
source myenv/bin/activate# Windows
python -m venv myenv
myenv\Scripts\activate
   - 安装 Django(pip install django)。
pip install django
python -m django --version #如果显示版本号,说明安装成功。
   - 安装其他可能用到的依赖(如数据库驱动 mysqlclient、psycopg2 等)。
pip install mysqlclient
pip install psycopg2-binary

2. 创建 Django 项目

   - 使用 django-admin startproject <project_name> 创建项目骨架。
django-admin startproject mysite #项目名叫 mysite#执行后,目录结构如下:
django_demo/
└── mysite/├── manage.py #管理项目的命令入口(运行、迁移、创建 app 等)├── mysite/│   ├── __init__.py│   ├── asgi.py		#部署入口(生产环境使用)│   ├── settings.py #项目配置文件(数据库、应用、时区等)│   ├── urls.py 	#项目主路由配置│   └── wsgi.py 	#部署入口(生产环境使用)
   - 配置 settings.py(打开 mysite/settings.py)(数据库、时区、静态文件路径等)。
# 修改时区为中国
TIME_ZONE = 'Asia/Shanghai'# 修改语言为中文
LANGUAGE_CODE = 'zh-hans'# 允许所有本地访问
ALLOWED_HOSTS = ['*']
- 运行开发服务器
cd mysite
python manage.py runserver
python manage.py runserver 0.0.0.0:8000#终端显示:
Starting development server at http://127.0.0.1:8000/

3. 创建应用(App)

   - 使用 python manage.py startapp <app_name> 创建应用。

Django 的项目通常由多个 App(应用) 组成,每个 App 都是一个独立的功能模块,例如:

goods/   商品模块(商品信息);    orders/  订单模块(下单、查看订单)
python manage.py startapp goods
python manage.py startapp orders#目录结构会变成这样
mysite/
├── manage.py
├── mysite/
└── goods 和 orders/├── __init__.py├── admin.py├── apps.py├── migrations/│   └── __init__.py├── models.py├── tests.py└── views.py

   - 在 settings.py(mysite/settings.py) 中 INSTALLED_APPS  注册应用。

4. 设计模型(Models)

   - 根据需求设计数据库模型( goods/models.py)。
from django.db import modelsclass Goods(models.Model):name = models.CharField(max_length=100, verbose_name="商品名称")price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="价格")stock = models.IntegerField(default=0, verbose_name="库存")create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")def __str__(self):return self.nameclass Meta:verbose_name = "商品"verbose_name_plural = "商品"
   
- 执行 python manage.py makemigrations 和 python manage.py migrate 创建表。
python manage.py makemigrations
python manage.py migrate

5. 管理后台(Admin)

   - 在 admin.py{} 注册模型,方便后台管理数据。  goods/admin.py
from django.contrib import admin
from .models import Goods@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):list_display = ('id', 'name', 'price', 'stock', 'create_time')
   - 创建后台管理员账号:
python manage.py createsuperuser
 重启测试效果,通过界面添加商品和订单:【需要先按照第7步 配置一下路由】


6. 创建视图(Views)

   - 使用函数视图(Function-Based View)或类视图(Class-Based View)。
   - 编写业务逻辑,获取数据、处理请求。
    goods/views.py , Function-Based View 示例
from django.shortcuts import render
from .models import Goodsdef goods_list(request):goods = Goods.objects.all()  # 查询所有商品return render(request, 'goods/list.html', {'goods': goods})

7. 配置 URL 路由(URLs)

   - 在项目主路由(mysite/urls.py)中引入应用路由。
from django.contrib import admin
from django.urls import path, include # include 本来没有的urlpatterns = [path('admin/', admin.site.urls),path('goods/', include('blog.goods')),  # 引入 goods 应用的路由
]
   - 在应用内 urls.py 配置路由。
from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'), #默认走这里path('goods_list/', views.goods_list, name='goods_list'),  # 商品列表页# 以后可以扩展其他路径,比如:# path('detail/<int:goods_id>/', views.goods_detail, name='goods_detail')
]

8. 模板和静态文件

   - 配置模板路径。
# 在 mysite/settings.py 中,找到 TEMPLATES 配置:
TEMPLATES = [{...'DIRS': [BASE_DIR / "templates"],  # 新增这一行,统一存放模板文件...},
]#根目录执行,就是跟manage.py 同级的目录
mkdir templates
mkdir templates/goods
   - 编写 HTML 文件,配置静态文件(CSS、JS、图片等)。
    templates/goods/list.html
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>商品列表</title>
</head>
<body><h1>商品列表</h1><ul>{% for item in goods %}<li>{{ item.name }} - ¥{{ item.price }} - 库存: {{ item.stock }}<a href="{% url 'orders:create_order' item.id %}">购买</a></li>{% empty %}<li>暂无商品</li>{% endfor %}</ul>
</body>
</html>
测试效果:


进阶

9. 表单和数据验证

   - 使用 Django Form 或 ModelForm 处理表单输入。
   - 数据验证和错误提示。




10. 用户认证与权限
    - 使用 Django 自带的 auth 系统。
    - 注册、登录、登出、权限管理。

11. 调试与测试
    - 使用 Django 内置开发服务器 python manage.py runserver 调试。
    - 编写单元测试(tests.py)。
    - 查看日志、处理报错。

12. 部署与上线
    - 配置 WSGI/ASGI(如 Gunicorn + Nginx)。
    - 配置数据库(生产环境 MySQL/PostgreSQL)。
    - 收集静态文件(python manage.py collectstatic)。
    - 配置安全设置(DEBUG=False、ALLOWED_HOSTS 等)。







本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/954979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[GDB] cgdb: GDB 可视化工具

[GDB] cgdb: GDB 可视化工具$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");Grok生成(2025年11月3日22:52:04)目录GDB 与 CGDB 学习文档前言:为什么要学习…

Maya 2025软件超详细下载安装教程(附安装包和激活步骤)

很多朋友想用上 Maya 2025 这款专业的三维动画设计软件,却在安装环节犯了难。其实 Maya 安装并不复杂,这篇教程就把 Maya 2025 从下载到能用的每一步都说清楚,跟着做,保准你能顺利用上 Maya。目录一、Maya 2025优势…

AI元人文构想:基于价值原语和三值纠缠的权衡

AI元人文构想:基于价值原语和三值纠缠的权衡 笔者:岐金兰 摘要: 本文提出“AI元人文”构想,旨在解决AI在价值决策中的根本缺陷。该框架通过将模糊的人文价值“原语化”为可操作单元,并引入“欲望值、客观值、自感…

一款基于 .NET WinForm 开源、轻量且功能强大的节点编辑器,采用纯 GDI+ 绘制无任何依赖库仅仅100+Kb!

前言 今天大姚给大家分享一款基于 .NET WinForm 开源免费(MIT License)、轻量且功能强大的节点编辑器,采用纯 GDI+ 绘制无任何依赖库仅仅100+Kb:STNodeEditor。 项目介绍 STNodeEditor 是一款基于 .NET WinForm 开…

10-31 题

10-31 题 目录10-31 题G - Minimum PermutationG - P-smooth numberG - Dream TeamP14254 分割(divide) - 洛谷 G - Minimum Permutation 可以用一个栈维护当前选了哪些数,从前往后考虑,首先检查 \(a_i\) 是否不在…

Windows install MiniConda3

1.Download.Open command and runbelow url//In command prompt curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe2.Install.Open new command window with administrator,and cd t…

109.Redis的geospatial和XXL-JOB 分布式任务调度平台整理

109.Redis的geospatial和XXL-JOB 分布式任务调度平台整理依旧是代驾项目中使用到的功能 特此总结 一个是Redis Geo用于存储和查询地理位置信息(经纬度) 一个是定时任务-分布式 XXL-JOB Redis Geohttps://redis.io/docs…

我的神奇题目

U613849 ggg 题目描述 给一个序列 \(a_i\) , \(q\)个询问L R 求从中有多少个区间 \([l,r]\) 满足 $ gcd(a_l,a_{l+1},a_{l+2},a_{r})=1 $, 输入格式 第一行一个 \(N\),满足N为正整数。 第二行序列\(a\)。 第三行 \(q…

STM32学习之概念——仿真器、调试器、下载器

stm32学习笔记STM32学习笔记 一、核心概念区分:下载 vs. 调试 首先要理解两个核心功能:程序下载:也叫编程或烧录。简单说就是把你在电脑上编译好的二进制程序文件(比如.bin或.hex文件)“灌入”到STM32芯片的内部F…

洛谷 P3273

题意直接看 原题 吧。 注意 \(-1000 \le v \le 1000\)。 这种连边的操作很容易让人想到 DSU,再一看,使用 DSU 对于每个连通块开个 set 维护最大值,整体再开个 set 维护全局最大值,不难搞出 \(O(n \log ^2 n)\) 的做…

docker compose.yaml配置

以下是一个常用的 MySQL Docker Compose 配置示例,包含数据持久化、环境变量配置、自定义配置等核心功能,适用于开发或测试环境。 1. 基础配置文件(docker-compose.yml) 创建一个 docker-compose.yml 文件,内容如…

A39C-T400A22D1a Lora通讯模块的命令配置示例记录

记录了开发中对A39C-T400A22D1a Lora模块直接发送命令进行配置的实例,作为文档的增补前言 开发的过程中,用A39C-T400A22D1aLora模块作无线传输。这个项目之前的人都是用厂商的ASDS上位机软件,直接配置Lora模块,也确…

好久没来了

好久没来了今天 Zotero出问题了!可恶

【入门】使用Node.js开发一个MCP服务器

介绍一个小小后端码农,研究了一下午,终于搞明白怎么开发一个nodeJs的MCP服务器,特写成一篇粗略的博客,供大家参考。MCP 是什么? MCP(Model Control Protocol)是一个标准化接口协议,用于定义AI工具的功能和参数…

Multisim保姆级图文下载安装教程包含下载、安装、汉化、激活

目录一、Multisim 14.3 是什么?为什么好用?二、Multisim 14.3下载三、Multisim 14.3 安装步骤(一步不落)3.1 解压安装包 3.2 进安装目录 3.3 运行安装程序 3.4 同意协议 3.5 别改安装路径 3.6 装主程序 3.7 同意组…

AgenticSeek:完全本地的AI助手,保护隐私的智能代理

AgenticSeek是一个100%本地运行的AI助手,完全替代Manus AI。支持语音交互,能够自主浏览网页、编写代码、规划任务,所有数据仅保存在您的设备上,确保完全的隐私保护和零云端依赖。AgenticSeek:完全本地的AI助手 项…

AI学习机是“智商税”吗?2025年各价位主流品牌选购指南

结论:AI学习机并非简单的“智商税”,但也不是万能神器。其价值高度依赖于产品真实的技术实力和是否契合孩子的学习需求。 🤔 一、AI学习机是智商税吗? 1️⃣ 为什么不是智商税?个性化学习:如同24小时私人教师。…

CSP-S 2025 题解

CSP-S 2025 题解 club 先贪心,每个数都选取 \(\max\)。考虑调整法解决 \(n/2\) 的限制,找到超过 \(n/2\) 的集合,按照次大值减去最大值的大小,从小到大把它们调整成次大值即可。复杂度 \(O(n\log n)\)(需要排序)…

Day30-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\annotation\Proxy

反射package Basic.src.com.reflect;import org.junit.Test;import java.lang.reflect.Method;public class Test4Method {@Testpublic void testGetMethhod() throws Exception {//1.反射第一步:先得到Class对象Clas…

JMeter生包

第一步:打开“jmeter”软件,在左侧“测试计划”右击选择“添加”——“线程组”,在fiddler中发送请求(例:登录山东商务职业学院官网登录界面),在fiddler左侧“会话列表”中双击登录界面的数据表,在右侧“请求栏”中…