位置: 文档库 > Python > 详细介绍Django开源框架的使用教程

详细介绍Django开源框架的使用教程

马革裹尸 上传于 2022-01-18 21:22

YPE html>

《详细介绍Django开源框架的使用教程》

Django是一个基于Python的高级Web框架,遵循"快速开发"和"DRY(Don't Repeat Yourself)"原则,能够帮助开发者高效构建安全、可维护的Web应用。本教程将从环境搭建到高级功能,系统讲解Django的核心使用方法。

一、环境准备与项目初始化

1.1 安装Python与虚拟环境

Django需要Python 3.8+版本支持。建议使用虚拟环境隔离项目依赖:

python -m venv myenv
source myenv/bin/activate  # Linux/Mac
myenv\Scripts\activate    # Windows

1.2 安装Django

通过pip安装最新稳定版:

pip install django

验证安装:

python -m django --version

1.3 创建项目

使用django-admin命令生成项目结构:

django-admin startproject myproject
cd myproject

项目目录说明:

myproject/
├── manage.py        # 命令行工具
└── myproject/       # 项目配置目录
    ├── __init__.py
    ├── settings.py  # 全局配置
    ├── urls.py      # 路由配置
    └── wsgi.py      # WSGI兼容配置

二、开发服务器与基础配置

2.1 启动开发服务器

python manage.py runserver

默认监听127.0.0.1:8000,可通过--settings指定配置文件:

python manage.py runserver 0.0.0.0:8000 --settings=myproject.settings

2.2 配置数据库

修改settings.py中的DATABASES配置,默认使用SQLite:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

如需使用MySQL/PostgreSQL,需安装对应驱动并修改配置。

2.3 创建应用

Django采用"项目-应用"结构,每个应用实现特定功能:

python manage.py startapp blog

应用目录包含models.py、views.py等核心文件,需在settings.py的INSTALLED_APPS中注册:

INSTALLED_APPS = [
    ...
    'blog.apps.BlogConfig',
]

三、模型(Models)与数据库操作

3.1 定义模型

在blog/models.py中定义数据模型:

from django.db import models

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

    def __str__(self):
        return self.title

3.2 生成迁移文件

python manage.py makemigrations

3.3 执行数据库迁移

python manage.py migrate

3.4 使用ORM操作数据

在views.py中通过模型类操作数据:

from django.shortcuts import render
from .models import Post

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

常用查询方法:

  • filter(): 条件查询
  • exclude(): 排除查询
  • get(): 获取单个对象
  • order_by(): 排序

四、视图(Views)与URL路由

4.1 视图类型

Django支持函数视图和类视图:

函数视图示例:

def post_detail(request, pk):
    post = Post.objects.get(pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})

类视图示例:

from django.views.generic import DetailView

class PostDetailView(DetailView):
    model = Post
    template_name = 'blog/post_detail.html'

4.2 URL路由配置

在blog/urls.py中定义应用级路由:

from django.urls import path
from . import views

app_name = 'blog'
urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post//', views.post_detail, name='post_detail'),
]

在项目级urls.py中包含应用路由:

from django.contrib import admin
from django.urls import path, include

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

五、模板系统

5.1 模板目录结构

创建templates目录并配置settings.py:

TEMPLATES = [
    {
        'DIRS': [BASE_DIR / 'templates'],
        ...
    }
]

5.2 基础模板语法

变量输出:

{{ post.title }}

标签使用:

{% if posts %}
    {% for post in posts %}
        

{{ post.title }}

{% endfor %} {% else %}

No posts available.

{% endif %}

5.3 模板继承

创建base.html基础模板:


    {% block title %}My Blog{% endblock %}


    {% block content %}{% endblock %}


子模板继承:

{% extends "base.html" %}

{% block title %}Post List{% endblock %}

{% block content %}
    {% for post in posts %}
        

{{ post.title }}

{% endfor %} {% endblock %}

六、表单处理

6.1 创建表单类

在blog/forms.py中定义表单:

from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'content']

6.2 视图处理

from django.shortcuts import redirect
from .forms import PostForm

def post_create(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('blog:post_list')
    else:
        form = PostForm()
    return render(request, 'blog/post_form.html', {'form': form})

6.3 模板渲染

{% csrf_token %} {{ form.as_p }}

七、用户认证系统

7.1 内置认证视图

在urls.py中包含认证URL:

from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]

7.2 自定义用户模型

创建自定义用户模型(需在项目初始化时设置):

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length=15)

# settings.py中配置
AUTH_USER_MODEL = 'accounts.CustomUser'

八、静态文件与媒体文件

8.1 配置静态文件

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

8.2 配置媒体文件(用户上传)

MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'

8.3 开发环境配置

在urls.py中添加媒体文件服务(仅开发环境):

from django.conf import settings
from django.conf.urls.static import static

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

九、RESTful API开发

9.1 安装DRF

pip install djangorestframework

9.2 配置序列化器

from rest_framework import serializers
from .models import Post

class PostSerializer(serializers.ModelSerializer):
    class Meta:
        model = Post
        fields = '__all__'

9.3 创建API视图

from rest_framework import generics
from .models import Post
from .serializers import PostSerializer

class PostList(generics.ListCreateAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

class PostDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

9.4 配置URL路由

from django.urls import path
from . import views

urlpatterns = [
    path('api/posts/', views.PostList.as_view()),
    path('api/posts//', views.PostDetail.as_view()),
]

十、部署与生产环境配置

10.1 生产环境设置

修改settings.py:

DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']

10.2 使用Gunicorn

pip install gunicorn
gunicorn myproject.wsgi:application --bind 0.0.0.0:8000

10.3 Nginx配置示例

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /static/ {
        alias /path/to/your/staticfiles/;
    }
}

关键词:Django框架、Python Web开发、MVT架构、ORM、模板引擎、表单处理、RESTful API、部署配置

简介:本文系统介绍Django框架的使用方法,涵盖环境搭建、模型定义、视图处理、模板系统、表单验证、用户认证、API开发及生产部署等核心内容,通过代码示例和配置说明帮助开发者快速掌握Django开发技能。