django2.1.7从0开始搭建一个个人博客网站第3天

23 篇文章 0 订阅
3 篇文章 0 订阅

django中初始化的setting文件介绍:

"""
Django settings for dj_blog project.

Generated by 'django-admin startproject' using Django 3.0.3.

For more information on this file, see
https://docs.djangoproject.com/en/3.0/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.0/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# __file__ 这个变量可以获得当前文件的路径
# os.path.abspath(__file__)指的是当前文件的绝对路径,包括文件名。
# 用 print(os.path.abspath(__file__)) 会得到/home/pyvip/dj31/dj_blog/settings.py
# os.path.dirname(__file__)指的是当前文件所在目录。
# 用 print(os.path.dirname(__file__)) 会得到/home/pyvip/dj31/dj_blog
#print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))会得到/home/pyvip/dj31
#项目根目录路径,也就是获得settings文件的上两层目录路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
# 加密盐,在使用startproject开始生成
SECRET_KEY = 'o0ekul98n#ztk5t%l7z!q-h5654#w2)@rblqgz9*1q2+8)=#f2'

# SECURITY WARNING: don't run with debug turned on in production!
#debug模式,上线要改为false
#而且,Django 关闭DEBUG模式后,就相当于是生产环境了,Django官网上指出如果是django框架一旦作为生产环境,那么它的静态文件访问接口就不应该从Django框架中走了,应该有独立的web环境,首推nginx 。
# DEBUG配置为True的时候会再页面暴露出一些出错信息或者配置信息以方便调试.但是在上线的时候应该将其关掉,防止配置信息或者敏感出错信息泄露.
DEBUG = True

# 上线前写允许访问的服务器ip地址,只有添加的ip地址才能访问项目
# 是为了限定请求中的host值,以防止黑客构造包来发送请求.只有在列表中的host才能访问.强烈建议不要使用*通配符去配置,另外当DEBUG设置为False的时候必须配置这个配置.否则会抛出异常.
ALLOWED_HOSTS = ['192.168.211.129']

# Application definition
# app注册
# INSTALLED_APPS是一个一元数组.里面是应用中要加载的自带或者自己定制的app包路径列表.
INSTALLED_APPS = [
    'django.contrib.auth',  #auth模块是对登录认证方法的一种封装,本身就是一个对象,可以获取用户的详细信息,有了auth模块可以验证登录信息是否存在数据库中,还可以检验用户是否已经登录,校验密码等
    'django.contrib.contenttypes', #其中有个app为django.contrib.contenttypes,在使用了python manage.py makemigrations 和 python manage.py migrate命令后,这个app会在数据库创建表 django_content_type,django_content_type表存储了用户所提交的所有model名称与model所在的app名称其中的model字段为用户定义的模型类的名称,app_label为该模型所在app名称
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 默认已有 如果没有只要添加app名称即可 例如: 'app1'
	# 新建的应用都要在这里添加
]
#中间件
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware', #一些安全设置,比如XSS脚本过滤。
    'django.contrib.sessions.middleware.SessionMiddleware',#session支持中间件,加入这个中间件,会在数据库中生成一个django_session的表。
    'django.middleware.common.CommonMiddleware',#通用中间件,会处理一些URL,比如baidu.com会自动的处理成www.baidu.com。比如/blog/111会处理成/blog/111/自动加上反斜杠。
    'django.middleware.csrf.CsrfViewMiddleware',#跨域请求伪造中间件。加入这个中间件,在提交表单的时候会必须加入csrf_token,cookie中也会生成一个名叫csrftoken的值,也会在header中加入一个HTTP_X_CSRFTOKEN的值来放置CSRF攻击。
    'django.contrib.auth.middleware.AuthenticationMiddleware',#用户授权中间件。他会在每个HttpRequest对象到达view之前添加当前登录用户的user属性,也就是你可以在view中通过request访问user。
    'django.contrib.messages.middleware.MessageMiddleware',#消息中间件。展示一些后台信息给前端页面。如果需要用到消息,还需要在INSTALLED_APPS中添加django.contrib.message才能有效。如果不需要,可以把这两个都删除。
    'django.middleware.clickjacking.XFrameOptionsMiddleware',#防止通过浏览器页面跨Frame出现clickjacking(欺骗点击)攻击出现。
]
# 项目总入口路由系统:总路由
ROOT_URLCONF = 'dj_blog.urls'
# 页面模板
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',
            ],
        },
    },
]

WSGI_APPLICATION = 'dj_blog.wsgi.application'

# 默认数据库连接
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}


# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators

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',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/
#语言
LANGUAGE_CODE = 'en-us'
#时区
TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


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

STATIC_URL = '/static/'


#1、STATICFILES_DIRS 列表中的目录是开发时创建的静态目录。
#2、STATIC_ROOT 是Django框架放到生产环境中的唯一的一个静态目录  
#3、而当你设置DEBUG=False时,就必须在Django框架前端部署nginx或者其他web服务器来提供静态访问入口

开始配置

一、将配置文件和模板文件都放到项目文件下,统一管理(这里要把项目路径和根路径分清楚)

1、再项目路径下创建一个settings文件夹,将settings文件拉到settings文件夹下,改名为dev.py

在这里插入图片描述
在这里插入图片描述

2、再wsgi\asgi\manage文件下分别修改settings文件位置:

在这里插入图片描述
manage.py:
在这里插入图片描述
wsgi:
在这里插入图片描述
asgi:
在这里插入图片描述

注:此时的BASE_DIR为/home/pyvip/dj31/dj_blog,而不是根目录/home/pyvip/dj31

3、将模板文件夹拉到项目文件夹下

在这里插入图片描述
在这里插入图片描述

二、其他配置

修改 settings 文件

1.配置模板文件

在项目根目录新建一个templates文件夹,用于存放模版文件。

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',
            ],
            'builtins': ['django.templatetags.static'],
        },
    },
]
2.配置mysql数据库

a.连接虚拟机中的mysql,使用root用户登录:

mysql -uroot -p

b.创建数据库

mysql> CREATE DATABASE myproject CHARSET=utf8;
Query OK, 0 rows affected (0.13 sec)

c.创建用户

# 新建    用户 密码 
mysql>create user qiyu identified by 'qiyu';
Query OK, 0 rows affected (0.00 sec)

d.用户授权

# 赋予 某库的所有权限    库   后面是账号
mysql> grant all on myproject.* to 'qiyu'@'%'; 
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.20 sec)

我们用刚才创建的用户可以看到数据库只有myproject和information_schema这两表,因为只给了他myproject的权限:
在这里插入图片描述
e.加载数据库配置

方法一:直接在settings.py文件中添加数据库配置信息。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
        'NAME': 'myproject',                       # 数据库名称
        'USER': 'qiyu',                      # 数据库登录用户名
        'PASSWORD': 'qiyu',                # 密码
        'HOST': '192.168.211.129',                # 数据库主机IP,如保持默认,则为127.0.0.1
        'PORT': 3306,                           # 数据库端口号,如保持默认,则为3306
    }
}

方法二:将数据库配置信息存到一个文件中,在settings.py文件中将其引入。(推荐)
新建数据库配置文件my.cnf(名字随意选择)
在settings.py文件中引入dba.cnf文件
在这里插入图片描述
目的:为了防止泄露账号密码,上传码云时,可以在.gitignore中选择忽略配置文件dba.conf

DATABASES = {
    # 方法二:
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': 'dj_blog/utils/dbs/dba.cnf',
        },
    }
}

在这里插入图片描述

方法二:安装pymysql,并且需要在settings.py文件所在包中的__init__.py中导入pymysql

#切换虚拟环境
workon dj31_env
#安装pymysql
(dj31_env) pyvip@VIP:~$ pip install -i https://pypi.douban.com/simple pymysql

在这里插入图片描述
在这里插入图片描述

3.配置redis缓存

用于存放用户session信息、短信验证码以及图片验证码信息等。

# 在虚拟机中安装django-redis
pip install -i https://pypi.douban.com/simple django-redis
# 在settings.py文件中指定redis配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://192.168.211.129:6379/0",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    },
}

如果不指定数据库,默认从0开始
在这里插入图片描述

4.配置日志器

用于记录系统运行过程中的各种日志信息。

在项目根目录中创建一个logs文件夹,用于存放日志文件

# 在setting.py文件中加入如下配置:
# 配置日志器,记录网站的日志信息
LOGGING = {
    # 版本
    'version': 1,
    # 是否禁用已存在的日志器
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(lineno)d %(message)s'
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(BASE_DIR, "logs/qiyu.log"),  # 日志文件的位置
            'maxBytes': 300 * 1024 * 1024,
            'backupCount': 10,
            'formatter': 'verbose'
        },
    },
    'loggers': {
        'django': {  # 定义了一个名为django的日志器
            'handlers': ['console', 'file'],
            'propagate': True,
            'level': 'INFO',  # 日志器接收的最低日志级别
        },
    }
}

在根目录下创建一个logs文件夹,下面创建一个qiyu.log的文件
在这里插入图片描述
这是我们看到这个路径时不对的,因此我们要修改路径为:

os.path.dirname(BASE_DIR)

在这里插入图片描述

5.时区配置
# 修改语言
LANGUAGE_CODE = 'zh-hans'
# 修改时区
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True
# utc 时间
USE_TZ = True
6.修改静态文件配置

​ 在项目根目录中创建一个static目录,用于存放静态文件(css、js、image、font等)

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),	# 用于存放静态文件
]

在项目目录下创建一个static的文件夹,把他作为根目录:
在这里插入图片描述

7.创建应用

​ a.本项目主要由4个模块组成,分别为新闻文章模块、课程视频播放模块、文档下载模块、用户管理模块等。在项目根目录下创建一个apps目录用于存放各个子应用。

# 在虚拟机中,cd进入apps
cd apps
python ../../manage.py startapp news
python ../../manage.py startapp course
python ../../manage.py startapp doc
python ../../manage.py startapp users

注:…/…/的原因时现在settings文件路径多了一层目录,要找到manage.py文件,创建app

b.在settings.py文件中,加入如下配置

import sys

# 创建应用之后,把apps目录加入到sys.path中
sys.path.insert(0, BASE_DIR)
sys.path.insert(1, os.path.join(BASE_DIR, 'apps'))
c.分别在apps文件夹和项目根目录文件夹上右击,加入到Sources Root根中,优化导入路径

在这里插入图片描述
d.将应用加入到INSTALLED_APPS列表中

INSTALLED_APPS = [
    # ...
    
    'users',  # 将应用加入到INSTALLED_APPS列表中
    'course',
    'doc',
    'news',
]
如果要pycharm启动django:
需要配置启动:
1、选择启动配置:

在这里插入图片描述

2、host修改为0.0.0.0,可以匹配所有,也可以改成自己的ip,比如192.168.211.129

在这里插入图片描述

3、修改环境变量:

在这里插入图片描述

改为现在的settings文件

在这里插入图片描述

4、配置一下三个路径,然后保存

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值