Django配置-settings.py

本文详细解析了Django项目的配置文件settings.py,包括关键参数如SECRET_KEY、DEBUG、ALLOWED_HOSTS、INSTALLED_APPS等的设置,以及数据库、中间件、模板、静态文件、邮件发送等核心配置项的说明。

settings

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
import os
 
#向上找两级,获取基地址
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
SECRET_KEY = 'tt^-bhdmqd-^pet%puk*q58gcqg-g)9h+97!4m9aveddp_$%5e'
 
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' ,
     'app01' ,
     'backend' ,
     'web' ,
]
 
#中间件配置
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' ,
     # "app01.my_middlewares.AuthMiddleware",  #注意自己写的中间件,配置要写在系统中的后面
]
 
ROOT_URLCONF = 'myblog.urls'
 
#模板(HTML页面)路径相关配置
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' ,
             ],
         },
     },
]
 
# #配置模板
# TEMPLATE_DIRS = (
#         os.path.join(BASE_DIR,'templates'),
# )
 
#网页服务网关协议消息
WSGI_APPLICATION = 'myblog.wsgi.application'
 
 
#原来默认的sqlite数据库
# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#     }
# }
 
#mysql数据库 同时需要设置__init__.py
# import pymysql
# pymysql.install_as_MySQLdb()
 
DATABASES = {
                 'default' : {
                     'ENGINE' : 'django.db.backends.mysql' ,
                     'NAME' : 'myblog' , #数据库名
                     'USER' : 'root' ,
                     'PASSWORD' : '',
                     'HOST' : 'localhost' ,
                     'PORT' : 3306 ,
                     }
                 }
 
#认证相关
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' ,
     },
]
 
# 语言
LANGUAGE_CODE = 'zh-hans'  # 主要针对admin页面
# 时间
TIME_ZONE = 'Asia/Shanghai'
 
USE_I18N = True
USE_L10N = True
 
#时区设置
USE_TZ = False
 
#静态文件
STATIC_URL = '/static/'  # 静态文件别名
STATICFILES_DIRS = (
     os.path.join(BASE_DIR, 'static' ),  #主文件下静态文件
)
 
# 与用户上传相关的配置
#路由urls.py中也需要配置
"""
# media配置:
from django.urls import path,re_path
from django.views.static import serve
from django.conf import settings
 
urlpatterns = [
     re_path(r"media/(?P<path>.*)$",serve,{"document_root":settings.MEDIA_ROOT}),
]
"""
 
MEDIA_ROOT = os.path.join(BASE_DIR, "media" )
MEDIA_URL = "/media/"
 
# 引用Django自带的User表,继承使用时需要设置
#如果数据库中的UserInfo(用户表)继承django内置AbstractUser
#model需导入 from django.contrib.auth.models import AbstractUser
AUTH_USER_MODEL = "app01.UserInfo"  #应用名.UserInfo
 
# 自定义配置登陆验证返回路径
LOGIN_URL = "/login/"
LOGIN_REDIRECT_URL = '/'
LOGOUT_URL = '/logout/'
 
 
 
 
#
EMAIL_HOST = 'smtp.exmail.qq.com'  # 如果是 163 改成 smtp.163.com
EMAIL_PORT = 465
EMAIL_HOST_USER = ''           # 帐号
EMAIL_HOST_PASSWORD = ''  # 密码
# DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
EMAIL_USE_SSL = True
 
#session存储的相关配置
# Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session表中。提供了5种类型的Session
"""
#1.数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.db'  # 引擎(默认)
#2.缓存
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
SESSION_CACHE_ALIAS = 'default'
# 要配合Django缓存配置
# 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
#3.文件
SESSION_ENGINE = 'django.contrib.sessions.backends.file'    # 引擎
SESSION_FILE_PATH = None
# 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir()
#4.缓存+数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'        # 引擎
#5.加密cookie 基本没有用
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'   # 引擎
"""
 
# 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 = 1209600                             # Session的cookie失效日期(2周)(默认)
# SESSION_EXPIRE_AT_BROWSER_CLOSE = False                  # 是否关闭浏览器使得Session过期(默认)
# SESSION_SAVE_EVERY_REQUEST = True        # (每次刷新更新时间) 是否每次请求都保存Session,默认修改之后才保存(默认)
 
SESSION_COOKIE_AGE = 60 * 60 * 24
SESSION_SAVE_EVERY_REQUEST = True
 
#打印日志到屏幕
LOGGING = {
     'version' : 1 ,
     'disable_existing_loggers' : False ,
     'handlers' : {
         'console' :{
             'level' : 'DEBUG' ,
             'class' : 'logging.StreamHandler' ,
         },
     },
     'loggers' : {
         'django.db.backends' : {
             'handlers' : [ 'console' ],
             'propagate' : True ,
             'level' : 'DEBUG' ,
         },
     }
}

views.py 发邮件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
def comment(request):
     """
     提交评论视图函数
     功能:
     1 保存评论
     2 创建事务
     3 发送邮件
     :param request:
     :return:
     """
     print (request.POST)
 
     article_id = request.POST.get( "article_id" )
     pid = request.POST.get( "pid" )
     content = request.POST.get( "content" )
     user_id = request.user.pk
 
     article_obj = models.Article.objects. filter (pk = article_id).first()
 
     # 事务操作
     with transaction.atomic():
         comment_obj = models.Comment.objects.create(user_id = user_id, article_id = article_id, content = content,
                                                     parent_comment_id = pid)
         models.Article.objects. filter (pk = article_id).update(comment_count = F( "comment_count" ) + 1 )
 
     response = {}
 
     response[ "create_time" ] = comment_obj.create_time.strftime( "%Y-%m-%d %X" )
     response[ "username" ] = request.user.username
     response[ "content" ] = content
 
     # 发送邮件
     from django.core.mail import send_mail
     from django.conf import settings
 
     # send_mail(
     #     "您的文章%s新增了一条评论内容"%article_obj.title,
     #     content,
     #     settings.EMAIL_HOST_USER,
     #     ["916852314@qq.com"]
     # )
 
     import threading
     t = threading.Thread(target = send_mail, args = ( "您的文章%s新增了一条评论内容" % article_obj.title,
                                                  content,
                                                  settings.EMAIL_HOST_USER,
                                                  [ "916852314@qq.com" ])
                          )
     t.start()
 
     return JsonResponse(response)

转载于:https://www.cnblogs.com/bubu99/p/10317771.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值