django目录结构
Django 是一个开放源代码的 Web 应用框架,它采用了MTV的开发模式,即模型(Model)、模板(Template)和视图(View)的结构。在开始一个Django项目之前,我们需要了解其目录结构,这样才能更好地组织我们的代码和资源文件。
1. 项目目录结构
当我们使用 django-admin startproject project_name
命令创建一个新的Django项目时,会生成如下目录结构:
project_name/
├── manage.py
└── project_name/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
manage.py
:是Django项目的命令行工具,通过它我们可以进行各种管理操作,比如运行开发服务器、创建应用等。project_name/
:是项目的主目录,该目录下包含了项目的配置文件和子应用等。__init__.py
:是一个空文件,标识该目录是一个Python包。settings.py
:包含了项目的设置,比如数据库配置、静态文件路径等。urls.py
:定义了项目的url映射关系。wsgi.py
:是项目的wsgi入口,用于部署项目到Web服务器。
2. 子应用目录结构
在Django中,一个项目通常包含多个应用(app),每个应用都有自己的模型、视图和模板等。当我们使用 python manage.py startapp app_name
命令创建一个新的应用时,会生成如下目录结构:
app_name/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py
migrations/
:包含了应用的数据库迁移文件。admin.py
:用于配置Django管理后台。apps.py
:包含了应用的配置信息。models.py
:定义了应用的数据模型。tests.py
:包含了应用的测试用例。views.py
:包含了应用的视图逻辑。
3. 静态文件目录结构
在Django中,静态文件(如CSS、JavaScript、图片等)需要被存放在特定的目录下,并且通过模板标签加载到模板中。通常情况下,我们会在应用的目录下创建一个名为 static
的子目录来存放静态文件,目录结构如下:
app_name/
└── static/
└── app_name/
├── css/
├── js/
└── img/
css/
:存放CSS文件。js/
:存放JavaScript文件。img/
:存放图片文件。
在模板中加载静态文件的方式如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Website</title>
<link rel="stylesheet" type="text/css" href="{% static 'app_name/css/style.css' %}">
</head>
<body>
<h1>Welcome to my website!</h1>
<img src="{% static 'app_name/img/logo.png' %}" alt="Logo">
<script src="{% static 'app_name/js/script.js' %}"></script>
</body>
</html>
以上代码中 {% static 'app_name/css/style.css' %}
是Django模板标签,用于加载静态文件。
4. 模板目录结构
Django中的模板文件通常存放在应用的templates目录下,这样可以方便Django自动查找和加载模板文件。模板目录结构如下:
app_name/
└── templates/
└── app_name/
├── base.html
└── index.html
base.html
:是通用的模板文件,可以被其他模板文件继承。index.html
:是应用的首页模板文件。
在视图中渲染模板文件的方式如下:
from django.shortcuts import render
def index(request):
return render(request, 'app_name/index.html')
以上代码中 render
函数会去查找并加载 app_name/index.html
模板文件。
5. media 目录结构
在Django中,media
目录是用来存放用户上传的文件,比如用户上传的图片、音频、视频等。我们在settings.py
中需要配置 MEDIA_ROOT
和 MEDIA_URL
路径,以告诉Django在哪里存储用户上传的文件以及如何访问这些文件。
settings.py
中的配置如下:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
在模型中定义上传文件字段的方式如下:
from django.db import models
class MyModel(models.Model):
image = models.ImageField(upload_to='images/')
在模板中加载用户上传的文件的方式如下:
<img src="{{ mymodel.image.url }}" alt="Image">
结语
以上就是Django的目录结构及其说明,了解这些目录结构将有助于我们更好地组织和管理我们的项目代码和资源文件。