1.django设置 2023/7/6
预计到2023/7/8完成
1.1 app的创建
- 创捷完成 bin app
- 导入数据库控件
# 在app目录下的_init_.py中输入以下代码
import pymysql
pymysql.install_as_MySQLdb()
1.2 settings设置
- 完成
#引入内部包,获取系统路径
import os
- 解决传参校验问题
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',
]
- 对资源文件夹的设置
# 在setting.py中配置静态文件的访问路径 (默认存在)
# STATIC_URL = ‘/static/’
# 配置静态文件的存储路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATIC_ROOT = '/root/django02/bin/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'common_static'),
)
- HTML路径的解决
#将HTML的文件默认放至templates文件夹中
#优先搜索django整体项目中的文件夹
#其次再搜索apps中的项目中的文件夹
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(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',
'django.template.context_processors.media',
],
},
},
]
- 跨域问题的解决
#"*"号在拥有域名后最好更改为自己的域名
# ALLOWED_HOSTS 后面所跟的属性值是一个字符串列表值,这个字符串列表值表示当下这个Django站点可以提供的host/domain(主机/域名)。这是一种安全措施,通过使用伪造的HTTP主机标头提交请求来防止攻击者中毒缓存并触发带有恶意主机链接的密码重置电子邮件,即使在许多看似安全的Web服务器配置下也是如此。
# 当DEBUG设置为False的时候必须配置这个配置。否则会抛出异常。
#示例: ALLOWED_HOSTS = ['chenyinren.top', 'www.chenyinren.top']
#覆盖设置
ALLOWED_HOSTS = ['*']
#X-Frame-Options HTTP响应头是用来给浏览器指示允许一个页面可否在<frame>,<iframe>,<embed>或者<object>中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免 clickjacking 攻击。
#根据 MDN 上面的介绍可以看出,X-Frame-Options是可以用来控制页面是否可以嵌入其他页面,并且还能避免点击劫持(clickjacking)。
#标准语法
# X-Frame-Options: deny
# X-Frame-Options: sameorigin
# X-Frame-Options: allow-from https://example.com/
# deny 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
# sameorigin 表示该页面可以在相同域名页面的 frame 中展示。
# allow-from uri 表示该页面可以在指定来源的 frame 中展示。
#我们查看 setting.py 的配置可以看到在 MIDDLEWARE(中间件)设置里面看到加载点击劫持的中间件。因此我们只需要将X-Frame-Options的默认值改一下即可。
X_FRAME_OPTIONS = 'SAMEORIGIN'
#注意
# 设置元标记没有作用
# <meta http-equiv="X-Frame-Options" content="deny">
- 设置数据库
from myinfo import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': NAME,
'USER': USER,
'PASSWORD': PASSWORD,
'HOST': HOST,
'PORT': PORT,
}
}
#myinfo.py
NAME='智能车库'
USER='***********'
PASSWORD='*************'
HOST='127.0.0.1'
PORT='3306'