📅  最后修改于: 2023-12-03 14:40:45.961000             🧑  作者: Mango
Django 是一个广泛使用的 Python 网络框架,用于开发大型、复杂的 Web 应用程序。Django 是 MVC(模型-视图-控制器)框架,旨在支持快速开发和易于维护的 Web 应用程序,而且还内置了强大的管理后台。
Django 应用程序通常由多个应用程序组成,每个应用程序都是可重用的专注于某个领域或某项功能。每个 Django 应用程序都要有自己的目录结构。
本文将介绍 Django 应用程序的目录结构,以便让程序员更好地组织和管理 Django 应用程序。
my_app/ # Django 应用程序的根目录
__init__.py # 空文件,表明 my_app 是一个 Python 包
admin.py # 管理后台相关代码
apps.py # 应用程序配置
models.py # 模型代码
tests.py # 测试代码
urls.py # 应用程序的 URL 配置
views.py # 视图代码
migrations/ # 数据库迁移代码
static/ # 静态文件 (CSS, JavaScript, 图像)
templates/ # HTML 模板
templatetags/ # 模板标签
locale/ # 本地化文件
utils/ # 工具函数和类
conf/ # 配置文件
__init__.py
__init__.py
是一个空文件,用于告诉 Python 解释器,my_app 是一个 Python 包。
admin.py
admin.py
包含管理后台相关的代码。Django 的管理后台提供了一种快速、简单的方式来管理应用程序中的数据模型。在这个文件中,可以定义数据模型的管理选项,比如指定哪些字段可以显示、哪些字段可以编辑等。
from django.contrib import admin
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'description')
apps.py
apps.py
包含 Django 应用程序的配置信息,比如应用程序的名字和别名、默认数据库和应用程序的描述。
from django.apps import AppConfig
class MyAppConfig(AppConfig):
name = 'my_app'
verbose_name = 'My Application'
models.py
models.py
是 Django 应用程序中最重要的一个文件,包含数据模型的定义。Django 使用 ORM(对象关系映射)技术将数据模型映射到关系数据库中。
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=30)
description = models.TextField()
def __str__(self):
return self.name
tests.py
tests.py
包含测试代码。Django 的测试框架提供了一种简单、高效的方式来测试代码。在这个文件中,可以编写各种测试用例,以确保应用程序的正确性和稳定性。
from django.test import TestCase
from .models import MyModel
class MyModelTestCase(TestCase):
def setUp(self):
MyModel.objects.create(name='Test Model')
def test_my_model_name(self):
model = MyModel.objects.get(id=1)
self.assertEqual(model.name, 'Test Model')
urls.py
urls.py
包含应用程序的 URL 配置信息。Django 的 URL 配置框架提供了一种灵活的方式来处理 HTTP 请求,以根据 URL 映射到相应的视图函数。
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('about/', views.about, name='about'),
]
views.py
views.py
包含视图函数代码。Django 的视图函数处理 HTTP 请求,并返回 HTTP 响应或重定向到其他 URL。
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello, world!')
def about(request):
return render(request, 'about.html', {'name': 'John'})
migrations/
migrations/
目录包含数据迁移代码。Django 的数据迁移框架提供了一种灵活的方式来修改数据库模式和数据。
无代码片段
static/
static/
目录包含静态文件,比如 CSS、JavaScript、图像等。
无代码片段
templates/
templates/
目录包含 HTML 模板文件。Django 的模板框架提供了一种灵活的方式来生成 HTML 页面。
无代码片段
templatetags/
templatetags/
目录包含模板标签代码。Django 的模板框架提供了一种简单的方式来自定义模板标签。
from django import template
from django.utils.safestring import mark_safe
register = template.Library()
@register.simple_tag
def bold(text):
return mark_safe('<b>{}</b>'.format(text))
locale/
locale/
目录包含本地化文件,用于国际化和本地化应用程序。
无代码片段
utils/
utils/
目录包含工具函数和类。在这个目录中,可以编写各种实用程序和辅助函数来帮助应用程序的开发。
def my_utility_function():
pass
conf/
conf/
目录包含应用程序的配置文件,比如数据库配置、缓存配置、邮件配置等。
无代码片段
Django 应用程序通常由多个应用程序组成,每个应用程序都应该有自己的目录结构。本文介绍了 Django 应用程序的目录结构,以及每个文件的作用和示例代码。理解 Django 应用程序的目录结构可以使程序员更好地组织和管理 Django 应用程序,提高开发效率和代码质量。