跳转至

Django 基础教程

Django 基础教程:全面详细讲解

Django 是一个开放源代码的高层次 Python Web 框架,旨在通过快速开发、简洁设计和不重复造轮子的理念帮助开发者构建强大而实用的 Web 应用程序。本文将全面详细地介绍 Django 的基础知识,并通过具体示例演示如何使用 Django 开发 Web 应用。

1. 安装与环境配置

1.1 安装 Django

在开始 Django 项目之前,需要确保你已经安装了 Python 和 pip。你可以通过以下命令安装 Django:

pip install django

你可以使用以下命令来验证 Django 是否安装成功:

python -m django --version
1.2 创建 Django 项目

安装完成后,可以使用以下命令创建一个新的 Django 项目:

django-admin startproject myproject

此命令将在当前目录下创建一个名为 myproject 的目录,包含 Django 项目所需的基本结构。

2. Django 项目结构

Django 项目通常包含以下主要目录和文件:

  • manage.py:一个命令行工具,用于与该 Django 项目进行交互。
  • myproject/:包含项目的配置文件和应用程序的设置。
  • __init__.py:使目录被视为一个 Python 包。
  • settings.py:项目的全局配置文件。
  • urls.py:项目的 URL 声明。
  • asgi.pywsgi.py:用于在部署项目时与 ASGI/WASGI 服务器交互的接口。

3. 创建 Django 应用

在 Django 中,项目可以包含多个应用(app)。每个应用都应专注于完成一个特定的功能。你可以使用以下命令创建一个新的应用:

python manage.py startapp myapp

该命令将生成一个名为 myapp 的目录,其中包含 Django 应用的基础结构。

4. 配置应用

创建应用后,你需要将其添加到项目的 settings.py 文件中的 INSTALLED_APPS 列表中:

INSTALLED_APPS = [
    ...
    'myapp',
]

5. 模型(Models)

Django 的模型是用于定义应用程序的数据结构的类。它们通常与数据库表一一对应。定义模型后,Django 将处理数据的增删改查操作。

5.1 创建模型

myapp/models.py 文件中定义一个简单的模型:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    published_date = models.DateField()
5.2 迁移数据库

在定义好模型后,需要将其迁移到数据库中。首先运行以下命令以创建迁移文件:

python manage.py makemigrations

然后,运行以下命令应用这些迁移:

python manage.py migrate

6. 管理站点

Django 提供了一个自动生成的管理站点,可以用来管理应用程序的模型数据。要启用管理站点,你需要在 myapp/admin.py 文件中注册你的模型:

from django.contrib import admin
from .models import Book

admin.site.register(Book)

然后你可以通过运行以下命令启动开发服务器,并访问管理站点:

python manage.py runserver

访问 http://127.0.0.1:8000/admin/,你会看到一个登录界面。使用 createsuperuser 命令创建超级用户:

python manage.py createsuperuser

7. 视图(Views)

视图函数或类负责处理 HTTP 请求,并返回 HTTP 响应。在 myapp/views.py 中创建一个简单的视图:

from django.http import HttpResponse

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

8. URL 路由

myapp/urls.py 中定义 URL 模式,并将其添加到项目的 URL 配置中。在 myproject/urls.py 中:

from django.urls import path
from myapp import views

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

9. 模板(Templates)

Django 的模板系统允许你将视图逻辑与表现层分离。首先在应用的目录下创建一个 templates 目录,然后在其中创建 HTML 文件。

例如,创建 templates/hello.html

<!DOCTYPE html>
<html>
<head>
    <title>Hello, World!</title>
</head>
<body>
    <h1>{{ message }}</h1>
</body>
</html>

在视图中渲染模板:

from django.shortcuts import render

def hello_world(request):
    return render(request, 'hello.html', {'message': 'Hello, World!'})

10. 静态文件和媒体文件

Django 提供了对静态文件(如 CSS、JavaScript、图像等)的支持。在 settings.py 文件中配置静态文件目录:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    BASE_DIR / "static",
]

11. 表单处理

Django 的表单框架允许你轻松处理用户输入。定义一个简单的表单:

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

在视图中处理表单:

from django.shortcuts import render
from .forms import ContactForm

def contact_view(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # 处理表单数据
            pass
    else:
        form = ContactForm()

    return render(request, 'contact.html', {'form': form})

12. 部署 Django 项目

在开发完成后,你可能需要将 Django 项目部署到生产环境。Django 提供了多种部署选项,如使用 WSGI 服务器(如 Gunicorn)或 ASGI 服务器(如 Daphne)。可以选择使用 Nginx 或 Apache 作为前端服务器。

结论

通过上述介绍,你应该对 Django 的基础知识有了一个全面的了解。Django 以其丰富的功能和高效的开发流程,适合构建从简单到复杂的 Web 应用。继续深入学习 Django,将帮助你更好地掌握 Web 开发的各种技术和最佳实践。