• Django入门学习--熟悉配置信息


    项目配置是根据实际开发需求从而对整个Web框架编写相关配置信息。配置信息主要由项目的settings.py实现,主要配置有项目路径密钥配置、域名访问权限、App列表、配置静态资源、配置模板文件、数据库配置、中间件和缓存配置

    基本配置信息

    一个简单的项目必须具备的基本配置信息有:项目路径、密钥配置、域名访问权限、App列表和中间件。以上一篇文章中的项目为例,settings.py的基本配置如下:
    image.png

    import os
    # 项目路径
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    #密钥配置
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = 'j3hy*e4*99=!@1ts*5y4&f$0^zw40862&j_$oo8j3j7*^)5y^i'
    
    #调试模式
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    # 域名访问权限
    ALLOWED_HOSTS = []
    
    # APP列表
    # Application definition
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # 下面是新创建的app注册信息
        'index',
        'user',
    ]
    # 中间件配置
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    
    • 项目路径BASE_DIR:主要通过os模块读取当前项目在系统的具体路径,该代码在创建项目时自动生成,一般情况下无须修改。
    • 密钥配置SECRET_KEY:是一个随机值,在项目创建的时候自动生成,一般情况下无须修改。主要用于重要数据的加密处理,提高系统的安全性,避免遭到攻击者恶意破坏。密钥主要用于用户密码、CSRF机制和会话Session等数据加密。
      • 用户密码:Django内置一套用户管理系统,该系统具有用户认证和存储用户信息等功能,在创建用户的时候,将用户密码通过密钥进行加密处理,保证用户的安全性。
      • CSRF机制:该机制主要用于表单提交,防止窃取网站的用户信息来制造恶意请求。
      • 会话Session:Session的信息存放在Cookies,以一串随机的字符串表示,用于标识当前访问网站的用户身份,记录相关用户信息。
    • 调试模式 DEBUG:该值为布尔类型。如果在开发调试阶段应设置为True,在开发调试过程中会自动检测代码是否发生更改,根据检测结果执行是否刷新重启系统。如果项目部署上线,应将其改为False,否则会泄漏系统的相关信息。
    • 域名访问权限ALLOWED_HOSTS:设置可访问的域名,默认值为空。当DEBUG为True并且ALLOWED_HOSTS为空时,项目只允许以localhost或127.0.0.1在浏览器上访问。当DEBUG为False时,ALLOWED_HOSTS为必填项,否则程序无法启动,如果想允许所有域名访问,可设置ALLOW_HOSTS=['*']。
    • App列表INSTALLED_APPS:告诉Django有哪些App。在项目创建时已有admin、auth和session等配置信息,这些都是Django内置的应用功能,各个功能说明如下。
      • admin:内置的后台管理系统。
      • auth:内置的用户认证系统。
      • contenttypes:记录项目中所有model元数据(Django的ORM框架)。
      • sessions:Session会话功能,用于标识当前访问网站的用户身份,记录相关用户信息。
      • messages:消息提示功能。
      • staticfiles:查找静态资源路径。如果在项目创建了App,必须在App列表INSTALLED_APPS添加App名称。
    • 中间件Middleware:是处理Django的request和response对象的钩子。当用户在网站中进行单击某个按钮等操作时,这个动作是用户向网站发送请求(request);而网页会根据用户的操作返回相关的网页内容,这个过程称为响应处理(response)。从请求到响应的过程中,当Django接收到用户请求时,Django首先经过中间件处理请求信息,执行相关的处理,然后将处理结果返回给用户。每个中间件的设置顺序是固定的,如果随意变更中间件很容易导致程序异常。各个中间件的说明如下:
      • SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。
      • SessionMiddleware:会话Session功能。
      • LocaleMiddleware:支持中文语言。
      • CommonMiddleware:处理请求信息,规范化请求内容。
      • CsrfViewMiddleware:开启CSRF防护功能。
      • AuthenticationMiddleware:开启内置的用户认证系统。
      • MessageMiddleware:开启内置的信息提示功能。
      • XFrameOptionsMiddleware:防止恶意程序点击劫持。

    配置静态资源

    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/3.0/howto/static-files/
    
    STATIC_URL = '/static/'
    

    静态资源的配置在setting.py文件的最后几行,在一般的应用程序中,静态资源包括CSS文件、JavaScript文件以及图片等资源文件。在默认状态下,如果通过URL访问静态文件,各个应用的静态文件都有自己的静态文件存放地,例如可以通过http://localhost:8000/index/static/test.png的模式进行访问index应用的静态文件test.png,此处可以统一把静态文件放到指定的目录,在上一行下面添加如下代码:

    # 在根目录下创建static目录,添加test.png文件,在浏览器进行测试
    STATICFILES_DIRS =(
       os.path.join(BASE_DIR, "static"),
       #os.path.join(BASE_DIR, "index/static"),
       #os.path.join(BASE_DIR, "user/static"),
    )
    

    image.png                                    image.png
    静态资源配置还有STATIC_ROOT,其作用是方便在服务器上部署项目,实现服务器和项目之间的映射。STATIC_ROOT用于项目生产部署,在项目开发过程中作用不大。STATIC_ROOT主要收集整个项目的静态资源并存放在一个新的文件夹,然后由该文件夹与服务器之间构建映射关系。STATIC_ROOT配置如下:STATICFILES_ROOT =(  os.path.join(BASE_DIR, "all_static"),#  在根目录下创建static目录,添加test.png件,在浏览器进行测试  )

    配置模板

    在Web开发中,模板是一种较为特殊的HTML文档。这个HTML文档嵌入了一些能够让Python识别的变量和指令,然后程序解析这些变量和指令,生成完整的HTML网页并返回给用户浏览。模板是Django里面的MTV框架模式的T部分,配置模板路径是告诉Django在解析模板时,如何找到模板所在的位置。创建项目时,Django已有初始的模板配置信息,如下所示:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')			#根目录下的模板,
                     #os.path.join(BASE_DIR, 'index/templates'), 	# index app里面的模板
                    ],
            'APP_DIRS': False, 										# 此处将True修改为False,
            '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',
                ],
            },
        },
    ]
    

    • BACKEND:定义模板引擎,用于识别模板里面的变量和指令。内置的模板引擎有Django Templates和jinja2.Jinja2,每个模板引擎都有自己的变量和指令语法。
    • DIRS:设置模板所在路径,告诉Django在哪个地方查找模板的位置,默认为空列表,此处设置为更目录下的templates文件,该文件若是用Django框架创建的话,会自动生成。
    • APP_DIRS:是否在App里查找模板文件,默认为True,但此处要设置为False才能使用templates里面的模板。
    • OPTIONS:用于填充在RequestContext中上下文的调用函数,一般情况下不做任何修改。

    配置数据库

    数据库配置是选择项目所使用的数据库的类型,不同的数据库需要设置不同的数据库引擎,数据库引擎用于实现项目与数据库的连接,Django提供多做种数据库引擎:sqlserver, postgresql, mysql, sqlite3, oracle, mongdb等选择其中一种或者几种都可。

    DATABASES = {
        # sqlite3的配置
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        },
        # mysql 的配置
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'django_database', 	# 此处要设置为你的数据库名
            'USER':	'root'				# 用户
            'PASSWORD':	'123456'		# 密码
            'HOST':	'127.0.0.1'			# 数据库所在IP
            'PORT':	'3306'				# 端口
        } 
    }
    

    如果把上述的连接信息改为MySQL数据库,首先安装MySQL连接模块,由于mysqldb不支持Python 3,因此Django 2.0不再使用mysqldb作为MySQL的连接模块,而选择了mysqlclient模块,两者之间在使用上并没有太大的差异。在配置MySQL之前,首先安装mysqlclient模块,这里以pip安装方法为例,打开CMD窗口并输入安装指令pip install mysqlclient,等待模板安装完成。或者在init__.py 里面加上:
    **import **``pymysql
    pymysql.install_as_MySQLdb()
    image.png
    报错 raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.version),此时点开上图红色base文件。
    image.png
    将红色框中的两行注释,即可,成功配置mysql数据库。
        image.png

  • 相关阅读:
    spin_lock & mutex_lock的差别?
    Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
    Android ViewPager使用具体解释
    大数运算
    fragment 中利用spinner实现省市联动
    秒杀多线程第四篇 一个经典的多线程同步问题
    Ewebeditor最新漏洞及漏洞大全
    轻松设置百度搜索手写输入
    Rational Rose 2007 &Rational Rose 2003 下载及破解方法和汉化文件下载
    svm中的数学和算法
  • 原文地址:https://www.cnblogs.com/sinlearn/p/12776239.html
Copyright © 2020-2023  润新知