7 Django 项目结构解析

7 Django 项目结构解析

在开始进行 Django 开发之前,理解其项目的目录结构非常重要。这不仅帮助你快速上手,还能让你在项目更改中游刃有余。本文将详细解析 Django 项目的基本结构,并结合案例进行说明。

Django 项目结构概览

创建一个新的 Django 项目,我们通常会使用以下命令:

1
django-admin startproject myproject

这将生成一个名为 myproject 的目录,里面包含以下文件和子目录:

1
2
3
4
5
6
7
8
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── settings.py
├── urls.py
├── asgi.py
└── wsgi.py

重要文件和目录解析

1. manage.py

manage.py 是一个命令行工具,允许你以多种方式与 Django 项目交互。使用它可以启动开发服务器、迁移数据库、创建应用等。

示例

启动开发服务器:

1
python manage.py runserver

2. myproject/

这是一个与项目名称相同的目录,里面包含了与项目直接相关的设置和配置文件。

目录内文件解析:

  • __init__.py: 标识这是一个 Python 包。通常为空,但可以用于包的初始化代码。

  • settings.py: 项目的核心配置文件。你可以在这里配置数据库,已安装的应用,中间件,静态文件目录等。

    示例:数据库配置

    1
    2
    3
    4
    5
    6
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3', # 使用 SQLite 数据库
    'NAME': BASE_DIR / "db.sqlite3", # 数据库文件名
    }
    }
  • urls.py: URL 路由配置文件。你在这里定义项目的 URL 模式,将特定的 URL 映射到视图函数或类视图上。

    示例:添加 URL 路由

    1
    2
    3
    4
    5
    6
    from django.urls import path
    from . import views

    urlpatterns = [
    path('', views.home, name='home'),
    ]
  • asgi.py: 用于支持异步功能的接口。通常用于部署和处理 WebSocket 连接等场景。

  • wsgi.py: Web 服务器网关接口文件,包含了Wsgi应用程序的入口,一般用于部署。

    示例:WSGI 应用程序

    1
    2
    3
    4
    5
    6
    import os
    from django.core.wsgi import get_wsgi_application

    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

    application = get_wsgi_application()

创建应用程序

在 Django 项目中,通常会将功能模块划分为多个应用。可以通过以下命令创建应用:

1
python manage.py startapp myapp

这将创建一个名为 myapp 的目录,内部包含以下结构:

1
2
3
4
5
6
7
8
myapp/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py

应用目录解析

  • migrations/: 存放应用的数据库迁移文件,用于跟踪模型的变化。

  • admin.py: 用于注册模型到 Django 管理后台。

    示例:注册模型

    1
    2
    3
    4
    from django.contrib import admin
    from .models import MyModel

    admin.site.register(MyModel)
  • apps.py: 应用配置文件,通常自动生成,但可以根据需要定制设置。

  • models.py: 定义应用的数据模型。

    示例:模型定义

    1
    2
    3
    4
    5
    from django.db import models

    class MyModel(models.Model):
    name = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
  • tests.py: 用于编写单元测试。确保你的应用可以正常工作。

  • views.py: 定义应用的视图函数或类,用于处理请求并返回响应。

    示例:视图定义

    1
    2
    3
    4
    from django.shortcuts import render

    def home(request):
    return render(request, 'home.html')

总结

理解 Django 项目的结构和各个组件的职责是高效开发的基础。通过具体的案例分析,我们对项目中的重要文件和目录有了清晰的认识。在后续的开发过程中,合理组织和管理这些文件,将为你带来便利。

8 启动 Django 开发服务器

8 启动 Django 开发服务器

在你完成了 Django 项目的基础设置之后,接下来最重要的一步就是启动开发服务器。开发服务器是用来调试和测试你的应用程序的一个轻量级服务器。下面是详细的步骤说明。

创建 Django 项目

如果你还没有创建 Django 项目,可以使用以下命令创建一个新的项目。假设我们创建一个名为 myproject 的项目:

1
django-admin startproject myproject

这条命令会在当前目录下生成一个名为 myproject 的文件夹,里面包含必要的文件和目录结构。

进入项目目录

在启动开发服务器之前,首先需要进入到你的项目目录中。

1
cd myproject

启动服务器

要启动 Django 开发服务器,你可以使用 runserver 命令。使用以下命令可以在本地环境中启动服务器:

1
python manage.py runserver

执行这条命令后,你会看到类似以下的信息:

1
2
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

这意味着你的开发服务器已经启动并在监听 127.0.0.1:8000 的请求。

访问开发服务器

打开你的网页浏览器,输入以下地址:

1
http://127.0.0.1:8000/

你应该能看到 Django 的欢迎页面,表示你的开发环境已经搭建成功。

修改端口号

如果你想在不同的端口上运行服务器,可以在命令中指定端口号。例如,要在 8080 端口启动服务器,可以使用以下命令:

1
python manage.py runserver 8080

然后你可以在浏览器中访问:

1
http://127.0.0.1:8080/

配置允许外部访问

在开发过程中,有时需要让其他设备访问你的服务器。你可以指定 IP 地址和端口。例如,使用下面的命令来允许所有 IP 访问:

1
python manage.py runserver 0.0.0.0:8000

这样,你的开发服务器将监听所有外部请求(注意,这种方式仅适合在开发环境中使用,生产环境请使用正规的 Web 服务器)。

停止服务器

若要停止正在运行的开发服务器,只需在终端中按下 CTRL+C

示例项目验证

如果你在项目中创建了一个简单的视图,你可以验证是否能够访问。例如,假设你已经在 views.py 中定义了以下视图:

1
2
3
4
from django.http import HttpResponse

def hello_world(request):
return HttpResponse("Hello, world!")

记得在 urls.py 中配置该视图:

1
2
3
4
5
6
from django.urls import path
from .views import hello_world

urlpatterns = [
path('', hello_world),
]

启动服务器后,通过访问 http://127.0.0.1:8000/ 你应该能看到 “Hello, world!” 的消息。

总结

启动 Django 开发服务器是学习和开发 Django 应用的重要步骤。通过简单的 runserver 命令,你可以轻松地在本地进行开发和测试。记得在开发完成后,使用适当的工具部署你的应用到生产环境中。

9 什么是Django应用

9 什么是Django应用

在Web开发领域,Django是一款非常流行的高层次Python Web框架,旨在快速开发高性能的网站。在这节中,我们将探讨什么是Django应用,它的特点,以及如何创建一个简单的Django应用示例。

Django应用的定义

在Django中,一个应用(App)是一个相对独立的模块,通常用于实现特定的功能。Django应用可以被复用在不同的项目中。简单来说,一个应用包含了处理某个特定功能所需的模型、视图、模板等。

应用的结构

一个标准的Django应用通常包含以下几个重要文件和目录:

  • models.py: 定义数据模型(数据库结构)。
  • views.py: 处理用户请求和响应。
  • urls.py: 定义URL路由。
  • templates/: 存放HTML模板。
  • static/: 存放静态文件(如CSS、JavaScript、图片)。

创建一个Django应用

接下来,我们将通过一个简单的案例来展示如何创建一个Django应用。

步骤1: 创建Django项目

首先,我们需要创建一个Django项目。打开终端并执行以下命令:

1
django-admin startproject myproject

这将创建一个名为myproject的目录,其中包含基本的Django项目结构。

步骤2: 创建Django应用

接下来,我们将在项目中创建一个名为blog的应用:

1
2
cd myproject
python manage.py startapp blog

步骤3: 定义模型

blog/models.py中,我们可以定义一个简单的Post模型,用于表示博客文章:

1
2
3
4
5
6
7
8
9
from django.db import models

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

def __str__(self):
return self.title

步骤4: 创建视图

我们将在blog/views.py中创建一个简单的视图,用于显示博客文章列表:

1
2
3
4
5
6
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})

步骤5: 配置URL

blog/urls.py中,我们将定义路由,以便用户能够访问我们的视图:

1
2
3
4
5
6
from django.urls import path
from .views import post_list

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

然后,在项目的主urls.py文件中(即myproject/urls.py),我们需要包含blog应用的URLs:

1
2
3
4
5
6
7
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]

步骤6: 创建模板

blog/templates/blog/目录下,创建一个post_list.html文件,并添加以下代码以展示博客文章列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Blog Posts</title>
</head>
<body>
<h1>Blog Posts</h1>
<ul>
{% for post in posts %}
<li>{{ post.title }} - {{ post.created_at }}</li>
{% endfor %}
</ul>
</body>
</html>

步骤7: 迁移数据库

在创建模型后,我们需要对数据库进行迁移,以创建相应的表:

1
2
python manage.py makemigrations
python manage.py migrate

步骤8: 启动开发服务器

最后,启动Django开发服务器以查看我们的应用:

1
python manage.py runserver

在浏览器中访问 http://127.0.0.1:8000/,您应该看到一个博客文章列表的页面。

总结

在本节中,我们详细探讨了什么是Django应用及其结构。通过创建一个简单的博客应用示例,我们演示了如何组织Django项目、定义模型、创建视图和模板,以及配置URL。通过这一过程,您应该对如何创建和管理Django应用有了基本的了解。