Django框架的中的setting.py文件说明详解

1.加载数据库,数据库的配置不能写死在seting.py文件中,下面的方式是读取另外一个文件,配置数据库:

config = ''
with open(os.path.join(BASE_DIR, 'config/config.json'), 'rt') as f:
  config = json.load(f)

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'szrqgl',
    'USER': config['db_user'],
    'PASSWORD': config['db_pwd'],
    'HOST': config['db_host'],
    'POST': config['db_port']
  }
}

上面的BASE_DIR一般使用的都是默认值,即:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

具体操作是创建一个config文件夹,该文件夹和你这个项目包同级,然后在其下面创建一个config.json文件,文件内容如下:

{
 "db_user": "root",
 "db_pwd": "123456",
 "db_host": "127.0.0.1",
 "db_port": "3306"
}

在上面的代码中,ENGINE要说明一下,官方提供了针对不同数据库的的不同操作引擎,以下是经常用的几个:

sqlite数据库:'django.db.backends.sqlite3',

postgreSQL数据库:'django.db.backends.postgresql_psycopg2',

mysql数据库:'django.db.backends.mysql'

oracle数据库:'django.db.backends.oracle'

2.时区设置和字符集设置,一般用的都是下面三个:

设置保存到数据库时间类型是否为UTC时间,如果不需要请设置为false,默认为true:USE_TZ = True

设置时区:TIME_ZONE = 'Asia/Shanghai'

设置语言:LANGUAGE_CODE = 'zh-hans'

设置字符集:DEFAULT_CHARSET = "utf-8"

3.设置国际化,根据个人需要进行设置:

国际化:USE_I18N = True

相同内容被不同时区地区的用户访问时,是否以不同格式内容展示(例如时间,日期,数字):USE_L10N = True

4.部署配置:

调试模式是否开启:DEBUG = True

访问web服务的的Ip配置:ALLOWED_HOSTS = ['*']

部署的时候请修改DEBUG和ALLOWED_HOSTS的值,一般将其修改为FALSE和指定ip,例如['127.0.0.1']

5.在setting.py中定义全局变量,该变量的变量名需要全部大写,否则会引用不到:

CONTEXTBOOL= False

6.app的安装配置,即INSTALLED_APPS设置,我们新建的项目需要添加到该配置下,每个配置的意义以后说明:

django.contrib.admin —— 管理站点。

django.contrib.auth —— 认证系统。

django.contrib.contenttypes —— 用于内容类型的框架。

django.contrib.sessions —— 会话框架,session数据可以在数据库中的django_session表中查看。

django.contrib.messages —— 消息框架。

django.contrib.staticfiles —— 管理静态文件的框架。

例如:

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'demo1',
]

7.django的中间件配置,即MIDDLEWARE设置,所谓中间件就是从用户请求到用户请求结束期间所做的操作,即用户的请求会次从上到下依次执行MIDDLEWARE中的配置,然后服务器响应用户的时候会再次从下至上依次执行,和Java的Filter很相像:

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

一般的django配置如上图,如果需要自己添加中间件配置的,也可自己添加,这里不再多说。

8.setting中的加密盐:

SECRET_KEY = 'i&&2$s&#%7npev^#uix==kis+h$4$ozscefiaw1c%p^+1c(l&6'

该配置是django的安全配置,防止攻击用的,该值是startProject时用系统的某个算法产生的.

9.静态文件目录配置(重中之重)

# 所有静态文件放置目录,在配置nginx的时候,nginx的静态资源要指向这里。

STATIC_ROOT = os.path.join(BASE_DIR, 'static').replace('\\', '/')

# 别名,这个别名指的是在html引用的名称

STATIC_URL = '/commonstatic/'

例如,下面的这个static实际上就是commonstatic,其在html里面显示如下:

{% block styles %}
  <link rel="stylesheet" href="{% static '/plugins/bootstrapValidator/bootstrapValidator.min.css' %}" rel="external nofollow" >
{% endblock %}

# 在django中指定静态文件的目录所在地

STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'commonstatic/').replace('\\', '/'),
)

一般情况下,上述的静态文件配置上面几乎可通用,绝少数情况下需要另配。

10.session会话配置(下面的配置会保存在数据库的django_session中):

SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认)
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 60 * 30 # Session的cookie失效日期(30min)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = True # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = True # 是否每次请求都保存Session,默认修改之后才保存(默认)

setting配置文件的内容大致如上,具体每个配置的作用会在以后的文章中进行说明!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Django contenttypes 框架详解(小结)

    一.什么是Django ContentTypes? Django ContentTypes是由Django框架提供的一个核心功能,它对当前项目中所有基于Django驱动的model提供了更高层次的抽象接口. 当然我们不是说的是http中的content-type!完全没有任何关系! 下面将一步一步解释Django ContentTypes在Django框架中做了什么,以及如何使用Django ContentTypes. 当然,如果对于ContentTypes有了初步了解而只是不了解它的应用场景,

  • Django框架模板介绍

    定义:在Django框架中,模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦,VT有着N:M的关系,一个V可以调用任意T,一个T可以供任意V使用 模板处理分为两个过程 ① 加载 ② 渲染 模板主要有两个部分 ① HTML静态代码 ② 动态插入的代码段(挖坑,填坑) 模板中的动态代码段除了做基本的静态填充,还可以实现一些基本的运算,转换和逻辑. 模板中的变量: 视图传递给模板的数据,遵守标识符规则 语法{{ var }} 模板中的标签 语法 {% tag

  • django框架之cookie/session的使用示例(小结)

    一.http协议无状态问题 http协议没有提供多次请求之间的关联功能,协议的本意也并未考虑到多次请求之间的状态维持,每一次请求都被协议认为是一次性的.但在某些场景下,如一次登录多次访问,我们希望可以保存登录状态,协议并没有直接提供会话跟踪的支持,需要靠其他手段来帮助实现目标. 二.会话跟踪技术--cookie 1.对cookie的理解 cookie是一个key-value的数据结构(类似python字典),用于保存需要维护状态的数据,cookie与session最大的区别是cookie的数据保

  • Django框架实现的简单分页功能示例

    本文实例讲述了Django框架实现的简单分页功能.分享给大家供大家参考,具体如下: 前面一篇<Django开发的简易留言板>写了个简单的留言板,如果数据量太多的话在一页显示就不那么友好了,本文就是做一个分页显示. 代码在上一篇的基础上修改. 导入分页模块并修改views #只需修改index函数即可 from django.core.paginator import Paginator def index(request): messages = models.Message.objects.

  • Django框架教程之正则表达式URL误区详解

    前言 利用Django开发网站,可以设计出非常优美的url规则,如果url的匹配规则(包含正则表达式)组织得比较好,view的结构就会比较清晰,比较容易维护.但这其中可能会有一些误区,下面就来给大家总结下. 问题: 我学习的视频大概是2015年录的,里面用的Django版本比较老关于正则表达式URL这一块都是用的url("url(r'^admin/', admin.site.urls),")方法.而我自己练习的时候是下载的最新版本,而正则表达式URL用的确实path("pat

  • Django框架模板注入操作示例【变量传递到模板】

    本文实例讲述了Django框架模板注入操作.分享给大家供大家参考,具体如下: 1.HTML模板如何解析变量? <h1>这是一个html页面</h1> <p>id:{{ user_id }}</p> <p>名字:{{ username }}</p> 其中:{{变量名}} 2.如何传递数据到HTML模板上? #coding:utf-8 from django.shortcuts import render,render_to_respon

  • 基于Django框架利用Ajax实现点赞功能实例代码

    概要: 要实现点赞功能,需要实现的有:谁进行的点赞.什么时候进行点赞.点赞的对象是谁.每一个对象的点赞数量是多少.点赞过后还需要能够取消点赞,为了是点赞后的信息能够及时的显示在前端页面,就需要使用Ajax来异步请求数据,实现实时显示. 下面话不多说了,来随着小编一起看看详细的介绍吧 模型分析: 创建的模型需要记录的数据有:点赞者.点赞对象.点赞时间.点赞的数量,由于前面三个属性主要用于记录点赞的状态,而点赞数量主要用于记录某篇文章的点赞数量,所以这里最好把点赞数量单独放在一个模型中.这里就创建了

  • Django框架多表查询实例分析

    本文实例讲述了Django框架多表查询.分享给大家供大家参考,具体如下: 多表查询是模型层的重要功能之一, Django提供了一套基于关联字段独特的解决方案. ForeignKey 来自Django官方文档的模型示例: from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() class Author(mod

  • Django ORM框架的定时任务如何使用详解

    前言 大家在Django项目开发过程中,是不是也经常遇到这样的场景:需要实现一个定时任务,但又不想脱离Django环境独立运行,如:还需要使用Django的ORM框架操作Models类.日志框架.复用已有配置/方法等等. 大部分同学,初次接触时首先想到的就是使用第三方插件,如:django-celery,django-crontab等等,我也不例外,但实际使用过程,总有诸多不爽,要么感觉大材小用,要么功能支持不完整,要么使用很繁琐... 多次尝试摸索后,发现Django已经帮我们实现了该功能,使

  • Python使用django框架实现多人在线匿名聊天的小程序

    最近看到好多设计类网站,都提供了多人在线匿名聊天的小功能,感觉很有意思,于是基于python的django框架自己写了一个,支持手动实时更名,最下方提供了完整的源码. 在线聊天地址(无需登录,开一个窗口,代表一个用户): http://zhaozhaoli.vicp.io/chatroom/happy/ 移动端聊天效果图: 网页版聊天效果图: 实现思路: 发送的消息通过ajax先写入数据库,通过ajax的循环请求,将写入数据库的消息显示到前端界面. 前端核心代码: <script> $(fun

随机推荐