弹药库 弹药库

好记性不如烂笔头

目录
django命令工具与中间件
/    

django命令工具与中间件

django内置命令行工具

管理django的命令行工具集合

  • django-admin
  • manage.py

区别:manage.py会在每个django项目中自动生成(局部的命令行工具)

二者命令相同,manage.py更方便在项目中使用

常用的内置命令

  • 创建一个django项目(工程)
django-admin startproject name
  • 项目中创建一个应用(APP)
python manage.py startapp name
  • 启动一个开发服务器
python manage.py runserver
  • 创建超级管理员
python manage.py createsuperuser
  • 更改用户密码
python manage.py changepassword
  • 检查django ORM模型
python manage.py check
  • 生成同步原语
python manage.py makemigrations
  • 模型同步
python manage.py migrate
  • 收集依赖中的静态文件
python manage.py collectstatic
  • django控制台
python manage.py shell
  • 清除过期会话
python manage.py clearsessions

自定义命令行工具

调用方法

python manage.py 自定义命令

步骤

  1. 创建指定的目录及文件结构
- mine(app名)
  - __init__.py
  - models.py
  - management
    - __init__.py
    - commands
      - __init__.py
      - update.py

  - urls.py
  - views.py

  1. 实现自定义命令

实现 django.core.management.base.BaseCommand的子类

添加命令参数 add_arguments

处理命令逻辑 handle

显示处理过程(self.stdout.write/self.stderr.write

实现逻辑内容-- update.py

from django.core.management.base import BaseCommand


class Command(BaseCommand):
    help = "自定义命令行工具"

    def add_arguments(self, parser):
        """
        添加命令的参数
        python manage.py update --all
        python manage.py update --one 2020
        """
        parser.add_argument('--all', action='store_true', dest='all', default=False, help='all')
        parser.add_argument('--one', action='store', dest='one', default=False, help='all')

    def handle(self, *args, **options):
        """
        按照接收到的参数的进行不同的处理逻辑
        """
        if options['all']:
            self.stdout.write('start argparse all')
            # 逻辑处理代码
            self.stdout.write('end argparse all')
        elif options['one']:
            self.stdout.write('start argparse one {}'.format(options['one']))
        else:
            self.stderr.write('argparse error')

argparse模块参考文档(https://docs.python.org/zh-cn/3/howto/argparse.html)

django中间件的开发和使用

  • 上下文处理器 ----context_processor
  • 中间件 ----middleware

上下文处理器

  • 渲染上下文Context
  • 请求上下文RequestContext

作用:连接views(视图)和templates(模板)


标题:django命令工具与中间件
作者:zhhui