跳到主要内容

Django 项目结构

介绍

Django是一个功能强大的Python Web框架,它遵循“约定优于配置”的原则,提供了清晰的项目结构,帮助开发者快速构建Web应用。对于初学者来说,理解Django项目的结构是掌握Django开发的第一步。本文将详细介绍Django项目的标准结构,并解释每个文件和目录的作用。

Django 项目的基本结构

当你使用Django的startproject命令创建一个新项目时,Django会自动生成一个标准的项目结构。以下是一个典型的Django项目结构:

myproject/
├── manage.py
├── myproject/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
└── db.sqlite3

1. manage.py

manage.py是Django项目的命令行工具,用于执行各种管理任务,如启动开发服务器、运行测试、创建数据库迁移等。你可以通过以下命令来运行开发服务器:

bash
python manage.py runserver

2. myproject/ 目录

myproject/目录是项目的根目录,包含项目的核心配置文件。

  • __init__.py:这是一个空文件,用于告诉Python这个目录是一个Python包。
  • settings.py:项目的配置文件,包含数据库设置、静态文件路径、中间件配置等。
  • urls.py:项目的URL配置文件,定义了URL与视图函数之间的映射关系。
  • asgi.pywsgi.py:分别用于ASGI和WSGI服务器的入口文件,用于部署项目。

3. db.sqlite3

db.sqlite3是SQLite数据库文件,Django默认使用SQLite作为开发数据库。你可以通过settings.py中的DATABASES配置来更改数据库设置。

实际案例

假设我们正在开发一个博客应用,项目结构可能会扩展如下:

myproject/
├── manage.py
├── myproject/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
├── blog/
│ ├── migrations/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ ├── views.py
│ └── urls.py
└── db.sqlite3

1. blog/ 目录

blog/目录是一个Django应用,用于处理博客相关的功能。

  • migrations/:存放数据库迁移文件的目录,Django通过迁移文件来管理数据库模式的变更。
  • admin.py:用于注册模型到Django管理后台。
  • apps.py:应用的配置文件。
  • models.py:定义数据模型的地方。
  • tests.py:编写测试用例的地方。
  • views.py:定义视图函数的地方。
  • urls.py:定义应用级别的URL配置。

2. 示例代码

假设我们在blog/models.py中定义了一个简单的博客文章模型:

python
from django.db import models

class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title

blog/admin.py中注册这个模型:

python
from django.contrib import admin
from .models import Post

admin.site.register(Post)

blog/views.py中定义一个简单的视图函数:

python
from django.shortcuts import render
from .models import Post

def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})

最后,在blog/urls.py中配置URL:

python
from django.urls import path
from . import views

urlpatterns = [
path('', views.post_list, name='post_list'),
]

总结

Django项目的结构清晰且易于理解,遵循了“约定优于配置”的原则。通过本文的介绍,你应该已经掌握了Django项目的基本结构,并了解了每个文件和目录的作用。接下来,你可以尝试创建一个自己的Django项目,并逐步扩展其功能。

附加资源

练习

  1. 创建一个新的Django项目,并添加一个名为news的应用。
  2. news应用中定义一个Article模型,包含titlecontentpublished_date字段。
  3. 编写视图函数和URL配置,显示所有文章的列表。
  4. Article模型注册到Django管理后台,并通过管理后台添加几篇文章。

通过完成这些练习,你将进一步巩固对Django项目结构的理解,并掌握如何在实际项目中应用这些知识。