• Django框架学习大纲


    对于使用 Python 的 Django 框架进行 web 开发的程序员来说,以下几点是必须了解的。

    环境配置与项目初始化

    命令:

    pip install django
    django-admin startproject myproject
    
    • 1
    • 2

    解析:

    • 使用 pip 安装 Django。
    • 使用 django-admin startproject 初始化一个新的 Django 项目。

    创建应用

    命令:

    cd myproject
    python manage.py startapp myapp
    
    • 1
    • 2

    解析:

    • 进入项目文件夹。
    • 使用 python manage.py startapp 创建一个新的应用。

    数据库迁移

    命令:

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

    解析:

    • makemigrations 会创建新的迁移文件。
    • migrate 实际应用这些迁移到数据库。

    启动开发服务器

    命令:

    python manage.py runserver
    
    • 1

    解析:

    启动开发服务器,一般会在 8000 端口。

    创建超级用户(用于后台管理)

    命令:

    python manage.py createsuperuser
    
    • 1

    解析:

    创建一个新的超级用户,用于登录 Django 的 admin 后台。

    Django模型(Models)

    • 定义数据结构和数据库表映射。

    代码示例:

    class Book(models.Model):
        title = models.CharField(max_length=100)
        author = models.ForeignKey(Author, on_delete=models.CASCADE)
    
    • 1
    • 2
    • 3

    解析:

    创建了一个名为 Book 的模型,包含字段 titleauthor

    Django视图(Views)

    • 处理用户请求和返回响应。

    代码示例:

    from django.http import HttpResponse
    
    def hello_world(request):
        return HttpResponse('Hello, world!')
    
    • 1
    • 2
    • 3
    • 4

    解析:

    创建了一个简单的视图,返回 “Hello, world!”。

    Django模板(Templates)

    • 用于动态生成 HTML 页面。

    代码示例:

    DOCTYPE html>
    <html>
    <head>
        <title>{{ title }}title>
    head>
    <body>
        <h1>{{ header }}h1>
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    解析:

    一个简单的模板,可以接收变量 titleheader 以动态生成 HTML。

    Django表单(Forms)

    • 用于处理用户输入。

    代码示例:

    from django import forms
    
    class ContactForm(forms.Form):
        name = forms.CharField(max_length=100)
        email = forms.EmailField()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解析:

    定义了一个名为 ContactForm 的表单,包含 nameemail 字段。

    Django Admin

    • 用于创建后台管理界面。

    代码示例:

    from django.contrib import admin
    from .models import Book
    
    admin.site.register(Book)
    
    • 1
    • 2
    • 3
    • 4

    解析:

    在 admin 后台注册 Book 模型,这样就可以在后台进行 Book 数据的 CRUD 操作。

    【提醒】这些只是 Django 框架中的一些核心概念和操作。对于更深入的了解,建议研究如何进行用户认证、使用中间件、缓存、信号(Signals)、创建 RESTful API 等高级主题。

    用户认证

    Django 自带了一个强大的用户认证系统。

    命令:

    python manage.py createsuperuser
    
    • 1

    解析:

    这会创建一个可以访问 Django admin 界面的超级用户。

    代码示例:

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def my_view(request):
        ...
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解析:

    使用 @login_required 装饰器来保护视图,只允许已登录用户访问。

    使用中间件

    中间件是处理请求和响应的钩子。

    代码示例:

    class SimpleMiddleware:
        def __init__(self, get_response):
            self.get_response = get_response
    
        def __call__(self, request):
            response = self.get_response(request)
            return response
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    解析:

    这是一个非常基础的中间件示例,它什么都没做,只是简单地传递了请求和响应。

    缓存

    Django 支持多种缓存后端(例如,memcached、redis)。

    代码示例:

    from django.views.decorators.cache import cache_page
    
    @cache_page(60 * 15)
    def my_view(request):
        ...
    
    • 1
    • 2
    • 3
    • 4
    • 5

    解析:

    @cache_page 装饰器会缓存视图的输出,参数是缓存的秒数(这里是15分钟)。

    信号(Signals)

    信号用于允许解耦的应用程序在某些事件发生时获得通知。

    代码示例:

    from django.db.models.signals import pre_save
    from django.dispatch import receiver
    from myapp.models import MyModel
    
    @receiver(pre_save, sender=MyModel)
    def my_callback(sender, **kwargs):
        ...
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    解析:

    这里我们使用 pre_save 信号来在 MyModel 被保存之前执行 my_callback 函数。

    创建 RESTful API

    Django REST framework 是一个强大的库,用于快速构建 RESTful API。

    命令:

    pip install djangorestframework
    
    • 1

    代码示例:

    from rest_framework import serializers, viewsets
    from myapp.models import MyModel
    
    class MyModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = MyModel
            fields = '__all__'
    
    class MyModelViewSet(viewsets.ModelViewSet):
        queryset = MyModel.objects.all()
        serializer_class = MyModelSerializer
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    解析:

    • 定义了一个名为 MyModelSerializer 的序列化器,用于将 MyModel 的实例序列化为 JSON。
    • 定义了一个名为 MyModelViewSet 的视图集,用于处理基础的 CRUD 操作。

    以上仅为高级主题的基础介绍和简单示例,每一个主题都有很多深入和高级的用法。如果你对某一主题有更多的兴趣,我建议查阅 Django 的官方文档或相关教程进行深入学习。

  • 相关阅读:
    【C++】循环体内和循环体外定义变量的区别
    从0到1学习用lua编写neovim插件
    找工作小项目:day16-重构核心库、使用智能指针(1)
    TFT-eSPI 库在 ESP32 上的配置和使用(ESP32 for Arduino)
    poi3.10 excel xls 设置列宽行高背景色加粗
    dockerfile的概念
    [附源码]计算机毕业设计SpringBoot仓储综合管理系统
    Linux笔记之diff和vimdiff
    基于衰减因子和动态学习的改进樽海鞘群算法-附代码
    GitHub这5个骚操作,大部分的人不知道
  • 原文地址:https://blog.csdn.net/m0_57021623/article/details/132939886