Django学习小记(二)-----框架初识

一、基础命令

1.1 初始化命令

  • 项目初始化

    • 写法:django-admin startproject 项目名称
    • 功能:项目初始化,生成项目文件夹,生成主应用文件夹,下图中的两个main文件夹
  • 应用初始化

    • 写法:python manage.py startapp 应用名称,每个项目至少有一个应用
    • 功能:实现某种专有功能的应用,下图中的api文件夹

    项目和应用区别:应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用

1.2 测试命令

  • 启动测试服务器(最常用)
    • 写法:python manage.py runserver
    • 功能:启动一个测试服务器,用于接收处理网络请求

1.3 数据库命令

  • 生成数据库表关系结构 过渡文件
    • 写法:python manage.py makemigrations
    • 功能:在应用文件夹的migrations文件夹中,生成操作数据库表头、表数据限制的中间文件
  • 生成数据库表关系结构
    • 写法:python manage.py migrate
    • 功能:在数据库文件中,生成表头、表数据限制等表初始化操作,非表数据输入

1.4 命令失效

  • 检查是否激活虚拟环境
  • 标识:命令行前有(venv)标识
  • 激活方法:进入...\venv\Scripts文件夹,终端中运行activate命令,取消激活运行deactivate命令

二、目录释义

  • 文件夹目录
    在这里插入图片描述

2.1 主应用main

  • settings.py:项目的所有运行设置
  • wsgi.py:简易http服务器,用于debug,生产环境可在此文件中修改为uwsgi
  • urls.py:主路由分发,接收wsgi转发的请求,并根据路由映射到相应的views文件中的函数

2.2 自定义功能应用api

  • 高频应用文件
    • views.py :用来定义视图处理函数的文件,接收请求,逻辑操作;
    • models.py :用于定义应用中所需要的数据表,初始化以及变更数据表,非表中的数据;
    • migrations :目录用于存储数据库迁移时生成的中间文件,该目录下的 init.py 文件标识 migrations 是一个 Python 包

  • 不常用
    • admin.py :用于将 Model 定义的数据表注册到管理后台,是 Django Admin 应用的配置文件;
    • apps.py :用于应用程序本身的属性配置文件;
    • tests.py :文件用于编写当前应用程序的单元测试;
    • init.py:标识 index 应用是一个 Python 包;

2.3 venv文件夹

  • 功能:虚拟环境中所有下载的软件都保存在此文件夹

三、请求流转顺序

3.1 宏观请求流转过程

在这里插入图片描述

3.2 django内部请求流转过程

  • 顺序执行
    1. 请求发起:浏览器发起请求request,发给服务器django
    2. Django模块:
      1. 中间件:setting.py中的MIDDLEWARE,功能为过滤请求修改请求和响应
      2. URL分发:urls.py文件(实现路由与views.py中的功能函数的映射),负责根据路由将请求分发给相应应用文件夹中的views.py文件中的功能函数
      3. model操作请求:请求若需要操作数据库,则需要model.py文件初始化或修改数据库属性==参数
    3. 响应发起:由view.py功能函数return数据,响应(response)再经由中间件返回给浏览器
  • 图示
    在这里插入图片描述

四、项目设置文件setting.py

  • 文件内容
    from pathlib import Path
    
    # 设置根目录,此处为manage.py所在的目录,即django_dir/main
    # 项目内目录写法:BASE_DIR/子目录,导包用
    BASE_DIR = Path(__file__).resolve().parent.parent
    	
    SECRET_KEY = '&r9r+5tk!0x1xgk=ad*bdh4s@b^r3y0&$bezpm+@&^x044ezw='
    
    # 调试时:True,生产环境:False
    DEBUG = True
    
    # 限制可访问IP白名单
    ALLOWED_HOSTS = ['*']
    
    # 注册app应用,startapp命令生成的应用也要在此注册
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'api',									# 一定记得这里注册自己的app,新手经常会忘
    ]
    
    # 中间件:有顺序,自定义中间件也需在此处注册
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',					
        'django.contrib.sessions.middleware.SessionMiddleware',		# 会话框架
        'django.middleware.common.CommonMiddleware',				# 常规中间件
        'django.middleware.csrf.CsrfViewMiddleware',				# csrf,防止跨站攻击
        'django.contrib.auth.middleware.AuthenticationMiddleware',	# 身份认证系统
        'django.contrib.messages.middleware.MessageMiddleware',		# 消息框架
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    ROOT_URLCONF = 'main.urls'
    
    # Django模板系统:此处今后前后端分离,用vue顶替,保持默认
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    # 设置简易web服务器,用于测试用
    WSGI_APPLICATION = 'main.wsgi.application'
    
    # 数据库设置:默认用sqlite,以后可改为mysql数据库
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    # 语言设置
    LANGUAGE_CODE = 'zh-hans'
    
    # 时区设置
    TIME_ZONE = 'Asia/Shanghai'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    # 静态文件设置:配合Django模板系统,用前后端分离,此处保持默认
    STATIC_URL = '/static/'
    

跳转至总篇目录

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值