Django实战:从零构建HelloDjango项目完整指南
本文详细介绍如何使用Django框架从零开始创建HelloDjango项目。内容涵盖虚拟环境配置、MTV架构各文件作用、子应用创建与注册、数据模型定义、数据库迁移、静态资源配置及路由映射。通过完整代码示例,帮助开发者快速掌握Django核心功能并运行测试。
Django项目创建与配置
本文旨在通过HelloDjango实例,详细解析Django网络框架的核心用法,供读者参考学习。
教程将引导用户从零搭建Django项目,完整演示MTV架构配置、子应用创建及静态资源访问流程。
项目完整代码已托管至GitHub:https://github.com/ouyangsuo/HelloDjango。
创建Django项目
- 首先,请确保已激活特定的虚拟开发环境,具体方法可参考创建虚拟开发环境的相关文档。
- 在终端中切换至目标目录,并执行以下命令来初始化项目:
django-admin.py startproject HelloDjango
- 随后,检查生成的工程目录结构以确认创建成功。
sudo apt install tree
tree HelloDjango/

此外,开发者也可在PyCharm集成开发环境中,通过新建工程并选择DjangoProject模板来创建项目。
HelloDjango目录下的__init__.py文件
- 该文件标识HelloDjango为一个Python包模块。
- 开发者可在此执行全局初始化操作,例如导入或初始化数据库连接。
settings.py配置文件
- 这是Django项目的核心配置文件,主要包含以下设置:
- 项目所引用的第三方组件列表;
- 已安装的应用程序列表;
- 数据库连接配置信息;
- 时间与语言相关设置;
- 静态文件的访问URL前缀及本地存储路径。
urls.py路由配置
- 该文件用于维护项目的URL路由映射,决定客户端请求由哪个视图函数响应。
- 具体的响应处理函数通常编写在项目的views.py文件或子应用的views.py文件中。
- 如图示例所示,当用户通过http://yourhost:port/home/发起访问时,请求将交由views.py中的home函数处理(注意:views.py需手动创建)。
from HelloDjango import views
url(r'^home/$', views.home)
wsgi.py接口文件
- 该文件定义了WSGI(Web Server Gateway Interface)的接口信息。
- 它主要用于服务器部署环节。
- 一般情况下,使用系统默认设置即可满足需求。
- 关于项目的具体部署步骤,将在后续章节中详细展开。
manage.py管理脚本
- 这是Django提供的命令行管理工具,通常无需修改,主要功能包括:
- 启动开发服务器运行站点;
- 执行数据迁移操作。
子应用创建与注册
创建子应用
- 在终端中执行以下命令来创建名为MyApp的子应用:
python manage.py startapp MyApp
创建完成后,需在HelloDjango项目的settings.py文件中注册该应用。
# 配置应用 INSTALLED_APPS = [ # 一堆默认的django应用 ... # 自定义的应用 'MyApp', ]
子应用目录结构说明
- __init__.py:标识当前目录为一个Python包。
- admin.py:管理站点模型的声明文件,默认为空。
- apps.py:应用信息定义文件,其中生成的AppConfig类用于定义应用名称等元数据。
- models.py:用于添加模型层的数据类定义。
- views.py:定义URL响应函数及路由规则。
- migrations包:自动生成的目录,存放数据迁移文件。
- tests.py:用于存放测试代码的文件。
数据模型定义与迁移
定义数据模型(Models)
首先定义班级类,请在MyApp目录下的models.py中插入以下代码:
# 班级类
class Grade(models.Model):
# 班级名称
gname = models.CharField(max_length=10)
# 开班日期
gdate = models.DateTimeField()
# 女生数量
ggirlnum = models.IntegerField()
# 男生数量
gboynum = models.IntegerField()
# 是否已逻辑删除该班级
isDelete = models.BooleanField(default=False)
# 定义班级的打印输出信息
def __str__(self):
return self.gname
接着在models.py中定义学生类,代码如下:
# 学生类
class Students(models.Model):
# 学生姓名
sname = models.CharField(max_length=20)
# 学生性别
sgender = models.BooleanField(default=True)
# 学生年龄
sage = models.IntegerField()
# 备注信息
sinfo = models.CharField(max_length=20)
# 是否已逻辑删除该学生
isDelete = models.BooleanField(default=False)
# 学生所属的班级
sgrade = models.ForeignKey(Grade)
执行数据迁移
数据迁移是将Python模型类映射到数据库表的过程。
首先执行命令生成迁移文件,文件将保存在MyApp下的migrations包中。
python manage.py makemigrations
随后执行迁移命令,将模型变更应用到数据库。
python mananger.py migrate
- 迁移完成后,框架会自动生成对应的数据库表,Django默认使用的数据库为SQLite。
- 生成的数据库文件路径位于工程根目录下的db.sqlite3。
- 生成的数据表结构如图所示。

模板页面与静态资源
生造一些测试数据
以下是生成班级测试数据的示例代码。

以下是生成学生测试数据的示例代码。

创建页面(Templates)
修改HelloDjango项目下的settings.py,配置模板目录路径。
TEMPLATES = [
{
...
# 将模板页面放在根目录/templates目录下的
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
...
},
]
同时修改settings.py中的静态资源配置项。
# 静态文件访问路由
STATIC_URL = '/static/'
# 静态文件存储目录:根目录/static/
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
在根目录下创建【static/img/】目录,并将图片文件dameinv.jpg放入其中。
创建templates目录,并在其中创建dameinv.html文件。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>大美女</title>
</head>
<body>
大美女来鸟~<br>
{# 加载静态资源 #}
{% load static %}
{# 加载图片位置 #}
<img src="{% static 'img/dameinv.jpg' %}" alt="我是大美女">
</body>
</html>
路由映射与视图处理
定义路由映射(Views)
在HelloDjango项目下的urls.py中插入以下路由配置代码:
from HelloDjango import views
from MyApp.admin import site
# 分发路由请求
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^admin/', site.urls),
# http://127.0.0.1:8000/请求交由HelloDjango下的views中的index函数处理
url(r'^$',views.index),
# http://127.0.0.1:8000/dameinv请求交由HelloDjango下的views中的dameinv函数处理
url(r'^dameinv/',views.dameinv),
# http://127.0.0.1:8000/myapp/xxx统统交由MyApp下的urls重新分发
url(r'^myapp/',include('MyApp.urls'))
]
在MyApp子应用下的urls.py中插入以下路由配置代码:
# 定义路由映射
urlpatterns = [
# 请求http://127.0.0.1:8000/myapp/,交由MyApp下的views.py中的welcome函数处理
url(r'^$', views.welcome)
]
定义路由处理函数(Views)
在HelloDjango项目下的views.py中插入以下处理函数代码:
# 处理http://127.0.0.1:8000/
def index(request):
# 直接在页面输出内容
return HttpResponse('Django:江中自有黄金屋,屋里把那代码撸,江中自有颜如玉,硬盘堆满几百G')
# http://127.0.0.1:8000/dameinv/
def dameinv(request):
# 渲染页面并呈现给用户
return render(request,'dameinv.html')
在MyApp子应用下的views.py中插入以下处理函数代码:
def welcome(request):
# 查询所有学生
students = Students.objects.all()
# 构造数据字典
data={
'students':students
}
# 将数据丢给templates/welcome.html进行渲染并呈现给用户
return render(request,'welcome.html',context=data)
项目运行与访问测试
运行项目
在终端中执行以下命令之一来启动服务器:
python manage.py runserver
python manage.py runserver [port]
python manage.py runserver [ip:port]
- 默认情况下,服务监听8000端口。
- 当指定ip为0.0.0.0时,服务器将匹配并响应本机所有IP地址的请求。
访问测试
在浏览器中访问http://127.0.0.1:8002/。

访问http://127.0.0.1:8002/dameinv/查看静态页面效果。

访问http://127.0.0.1:8002/myapp/查看子应用数据。

希望本文所述的Django框架基于Python的程序设计内容能对大家有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









