四、Django设置相关

作者:@skyflask
转载本文请注明出处:https://www.cnblogs.com/skyflask/p/9310551.html


目录

1、全局设置
2、路由系统设置
3、视图函数
4、访问URL
5、后台管理配置
6、连接数据库设置

1、全局设置

setttings文件

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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
import os
import sys
 
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
# 这里用到了python中一个神奇的变量"__file__", 这个变量可以获取到当前文件的路径(含文件名)
# 再来一个os.path.dirname()就是获得上一级目录
# "BASE_DIR"就是工程根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
# 如果包含外部APP,Mark成Source Root后可能还需要添加如下配置,否则运行manage.py会报错No module named 'xx'
# "extraapps"是外部APP上级目录包(Mark成Source Root)
# sys.path.insert(0, os.path.join(BASE_DIR, 'extraapps'))
 
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
 
# 产品密钥。创建Django项目时自动分配的产品密钥,请使用原自动分配的产品密钥替换此行!!
SECRET_KEY = 'ug4o-53gk-tuxn@@69g_jr8aqq%&e183kr=xw6reg7247&jam='
 
# 上线时必须将DEBUG设为False
DEBUG = True
 
# 可指定主机,若元素为'*',表示所有同一局域网内的网络均可访问
ALLOWED_HOSTS = ['localhost', '127.0.0.1']
 
# App加载
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 'blog',                        # 我的APP
   
]
 
# 自定义的auth APP的User模型,继承抽象模型AbstractUser
# AUTH_USER_MODEL = 'appname.UserModelName'
 
# 自定义的用户登录验证类,继承ModelBackend类,重写authenticate()方法
# AUTHENTICATION_BACKENDS = ['apps.myuser.views.CustomBackend', ]
 
# 中间件
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',
]
 
ROOT_URLCONF = 'firstapp.urls'  # 这里系统会自动生成,一般不需要修改。
 
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        '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 = 'firstapp.wsgi.application'  # 这里需要据实修改,系统会自动生成。
 
# 数据库设置,默认为sqlite
# https://docs.djangoproject.com/en/1.11/ref/settings/#databases
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
 
# 用户验证
# https://docs.djangoproject.com/en/1.11/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',
    },
]
 
# 国际化
# https://docs.djangoproject.com/en/1.11/topics/i18n/
LANGUAGE_CODE = 'en-us'  # 中文简体是'zh-hans',Admin后台管理系统的页面语言随之改变
 
# 本地时间
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False  # 若使用了本地时间,必须设为False!!(默认值True)
 
# 邮箱服务配置
EMAIL_HOST = 'xxx.com.cn'  # 发送者邮箱服务器
EMAIL_PORT = 25
EMAIL_HOST_USER = ''  # 发送者用户名(邮箱地址)
EMAIL_HOST_PASSWORD = ''  # 发送者密码
EMAIL_USE_SSL = False
 
# 静态文件配置 (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
 
# 静态文件的访问,用于程序中,如{{static '静态文件目录下的子路径'}}
STATIC_URL = '/static/'
 
# 静态文件的公用目录,但不能与STATIC_ROOT冲突!
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
 
# 静态文件的生产环境根目录,当运行"python manage.py collectstatic"的时候,会将STATICFILES_DIRS以及各app中static的所有的文件复制收集到STATIC_ROOT
# 把这些文件放到一起是为了用Apache等上线部署的时候更方便
# 需要配置URL,如"url(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT})"
# STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic').replace('\\', '/')
 
# 媒体文件(用户上传的文件)配置
# 不能像静态文件那样调用,而是先配置"TEMPLATES"中的"context_processors"添加'django.template.context_processors.media';
# 然后配置URL,如"url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT})";
# 调用示例:{{ MEDIA_URL }}{{ modelobj.fieldname }}
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')
 
# Django日志配置
# LOGGING = {
#     'version': 1,  # 指明dictConnfig的版本
#     'disable_existing_loggers': False,  # 禁用所有的已经存在的日志配置
#
#     # 格式器
#     'formatters': {
#         'standard': {  # 详细
#             'format': '\n时间:[%(asctime)s]\t级别:[%(levelname)s]\t文件名:[%(filename)s]\t方法:[%(funcName)s]\t行数:[%(lineno)d]\t日志消息:\n[%(message)s]\n\n------------------------------------------------------------',
#         },
#         'simple': {  # 简单
#             'format': '时间:%(asctime)s | %(levelname)s | %(message)s',
#         },
#     },
#
#     # 过滤器
#     'filters': {
#         'require_debug_true': {
#             '()': 'django.utils.log.RequireDebugTrue',
#         },
#     },
#
#     # 处理器,在这里定义了三个处理器
#     'handlers': {
#         'file_handler': {  # 文件处理器,所有高于(包括)level的消息会被保存到"filename"
#             'level': 'INFO',
#             'class': 'logging.FileHandler',
#             'formatter': 'standard',
#             'filename': 'E:/PythonProj/mydjsite/log/file.log',
#         },
#         'console': {  # 控制台处理器,所有的高于(包括)level的消息会被传到控制台,使用的是standard格式器
#             'level': 'INFO',
#             'class': 'logging.StreamHandler',
#             'formatter': 'standard',
#             # 'filters':['require_debug_true'],
#         },
#         'mail_admins': {  # AdminEmail处理器,所有高于(包括)而level的消息会被发送给站点管理员,使用的是standard格式器
#             'level': 'ERROR',
#             'class': 'django.utils.log.AdminEmailHandler',
#             'formatter': 'standard',
#             # 'filters': ['require_debug_true'],
#         },
#     },
#
#     # 记录器
#     'loggers': {
#         'django': {  # 使用file_handler处理器,所有高于(包括)level的消息会被发往file_handler和console处理器
#             'handlers': ['file_handler', 'console', 'mail_admins'],
#             'level': 'INFO',
#             'propagate': False,  # 是否继承父类的log信息
#         },
#         'django.request': {  # 记录与处理请求相关的消息。5XX错误被记录为ERROR消息;4XX错误记录为WARNING消息
#             'handlers': ['file_handler', 'console', 'mail_admins'],
#             'level': 'INFO',
#             'propagate': False,
#         },
#         'django.server': {  # 记录开发服务器下处理请求相关的消息。只用于开发阶段
#             'handlers': ['file_handler', 'console', 'mail_admins'],
#             'level': 'INFO',
#             'propagate': False,
#         },
#         'django.db.backends': {  # 与数据库交互的代码相关的消息
#             'handlers': ['file_handler', 'console', 'mail_admins'],
#             'level': 'INFO',
#             'propagate': False,
#         },
#         'myproject.custom': {  # 自定义处理器
#             'handlers': ['file_handler', 'console', 'mail_admins'],
#             'level': 'INFO',
#             'propagate': False,
#         },
#     }
# }
 
# 缓存配置,下方一般限开发者用
# 可以缓存于内存(locmem.LocMemCache)或文件(filebased.FileBasedCache)
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
    }
}
 
# 会话生存期设置,浏览器关闭,则会话失效(可能对Chrome浏览器无效)
# 在登录视图get请求中添加语句"request.session.set_expiry(0)",对Chrome会有效
SESSION_EXPIRE_AT_BROWSER_CLOSE = True

  

全局设置完成后,对应的db、templates、static路径系统都会认识或生成。

 

2、路由系统设置

urls文件

在一个project项目有多个app的情况下,我倾向于把urls单独于每个app,即:

urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]

  

上面就是把blog开头的url定向到blog.urls下面去解析:

1
2
3
4
5
6
from django.conf.urls import url
from . import views
 
urlpatterns = [
    url('^hello/', views.hello),
]

  

3、视图函数

1
2
3
4
5
6
# Create your views here.
from django.http import HttpResponse
 
 
def hello(request):
    return HttpResponse("Hello, world. You're at the index.")

 

4、访问URL

至此,一个基本的Django应用就跑起来了。

 

5、后台管理配置

创建管理员账号之前,我们必须先生存admin数据库。

创建账号:

登录后台管理:

至此,后台管理完成。

6、连接数据库设置

首先连接数据接时,会有错误:

产生这个错误的原因是缺少JDBC驱动文件,需要额外安装。

然后在pycharm页面点击数据库查看对应的表结构:

至此,数据库连接设置完成。

posted @   skyflask  阅读(251)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示