Django配置信息
Django基本配置信息
from pathlib import Path
#项目路径
BASE_DIR = Path(__file__).resolve().parent.parent
#密匙配置
SECRET_KEY = 'django-insecure-ta78sh33gngj=7%plp*_jd2x1xd3s1z947$$!gd_f4t@grra_g'
# SECURITY WARNING: don't run with debug turned on in production!
#调试模式
DEBUG = True
#域名访问权限
ALLOWED_HOSTS = []
#App列表
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'index.apps.IndexConfig',
]
说明
密钥配置SECRET_KEY:这是一个随机值,主要用于重要数据的加密处理,提高项目的安全性。
密钥主要用于用户密码、CSRF机制和Session等数据加密。
调试模式DEBUG:在开发调试模式过程中会自动检测代码是否修改,根据结果执行是否刷新重启系统。
如果项目部署上线,要改为False,关闭调试模式。否则会泄露项目相关信息。
域名访问权限:设置可访问的域名。当BEBUG为True并且ALLOWED_HOSTS 为空只允许回环地址在浏览器上访问。
当DEBUG为False时,ALLOWED_HOSTS为必填项,如果想允许所有的域名都可以访问,ALLOWED_HOSTS = [ “*” ]
App列表:告诉Django有那些App.在项目创建时已有配置信息:
admin:内置后台管理系统。
auth:内置的用户认证系统。
contenttypes:记录项目中所有model元数据(ORM框架)
sessions:Session会话功能用于标识当前访问网站的用户身份及其他相关信息。
messages:消息提示功能
staticfiles:查找静态资源路径
IndexConfig:pychram自动创建App名称注册
在项目中创建了App,必须在App列表中注册。最简单的形式就是将App的名字添加到INSTALLED_APPS中。
仿照appname.apps.AppnameConfig的形式添加也可以。
资源文件配置
资源文件分为静态资源和媒体资源,前者指网站不会变的文件如Css、JavaScript文件及一些图片等。由配置属性STATIC_URL、STATICFILES_DIRS和STATIC_ROOT进行设置。媒体文件一些会变动的资源如:头像、歌曲文件等。由MEDIA_URL、MEDIA_ROOT
资源路由
STATIC_URL = '/static/'
访问静态资源必须使用STATIC_URL设置的值。如css资源的拆分地址static/css/base.css
资源集合STATIC_DIRS
该属性以列表的形式表示,设置可以访问的静态资源文件夹
STATIC_DIRS=[
os.path.join(BASE_DIR,'statics'),
]
表示可以访问根目录下的statics文件夹内的资源。如我们访问上面的CSS地址,Django就会去查找指定目录下的文件。
资源部署STATIC_ROOT
STATIC_ROOT作用是在服务器上部署项目实现服务器和项目之间的映射。STATIC_ROOT主要收集整个项目的静态资源并存放在一个新的文件夹下。在开发阶段并不需要设置。详细后续。
讨论
关于配置正确、路径正确但在调试DJANGO中读取不到STATIC中的文件问题:将配置文件配置成这样(这里我是建立static文件夹,作为静态资源文件夹,其中有css、js、images文件夹。)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
('css', os.path.join(STATIC_ROOT, 'css').replace('\\', '/')),
('js', os.path.join(STATIC_ROOT, 'js').replace('\\', '/')),
('images', os.path.join(STATIC_ROOT, 'images').replace('\\', '/')),
)
注:一定要确定配置正确、使用路径正确
媒体资源
媒体路由地址:
MEDIA_URL=’/media/’
访问媒体资源必须使用STATIC_URL设置的值
媒体资源访问
MEDIA_ROOT=os.path.join(BASE_DIR,’media’)
值得注意:还需要在项目全局urls.py中配置如下信息:
from django.contrib import admin
from django.urls import (path, re_path)
from django.views.static import serve
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
re_path('media/(?P<path>.*)',serve,{
'document_root':settings.MEDIA_ROOT},name='media'),
]
settings配置信息
STATIC_URL = '/static/'
STATIC_DIRS=[
os.path.join(BASE_DIR,'statics'),
]
MEDIA_URL='/media/'
#获取media文件夹的完整路径信息
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
模板配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates']
,
'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',
],
},
},
]
说明:
- ‘BACKEND’:定义模板引擎,用于识别模板里面的变量和指令。
- DIRS:设置模板所在路径,其设置方法有两种
'DIRS': [os.path.join(BASE_DIR,'templates')]
- APP_DIRS:是否在App中寻找模板文件。
- OPTIONS:用于填充RequestContext的上下文(模板里面的变量和指令),一般情况下不做修改。
数据库的配置
数据库配置是选择项目所使用的数据库类型,不同的数据库需要设置的数据库引擎也不同。
下面是Django提供的四种引擎:
Django.db.backends.postgresql
--------------------mysql
--------------------sqlite3
--------------------oracle
项目创建时,默认使用Sqlite3数据库,其配置信息如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
当然也可以使用mysql数据库。
使用mysql数据库必须先安装mysqlclient或pymysql库。使用pymysql库还需在项目文件夹中的__init__.py配置如下代码:
import pymysql
pymysql.install_as_MySQLdb()。
使用mysql数据库配置信息如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'myblog',#数据库名
'USER':'root',#用户
'PASSWORD':'',#密码
'HOST':'127.0.0.1',#ip地址
'PORT':"3306",#端口
}
}
若项目中连接了多个数据库,如果模型未指定数据库,则会指定key为default的数据库。
中间件
一个用来处理Django请求Request和响应Response的框架级别的钩子。
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',
]
说明:
- SecurityMiddleware:内置的安全机制,保护用户与网站的通信安全。
- SessionMiddleware:会话Session
- LocaleMiddleware: 国际化和本地化功能
- CommonMiddleware: 处理请求信息,规范化请求内容
- CsrfViewMiddleware:开启CSRF防护
- AuthenticationMiddleware:开启内置的用户认证系统
- MessageMiddleware:开启内置的信息提示功能
- XFrameOptionsMiddleware:防止恶意程序单击劫持。