settings.py常规配置项
settings.py常见配置项
1. 配置Django_Admin依照中文界面显示
LANGUAGE_CODE = 'zh-hans'
2. 数据库配置(默认使用sqlite3)
使用MySQL的配置方法:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'pythondb', 'USER': 'pythonuser', 'PASSWORD': 'adminpwd', 'HOST': '192.168.124.128', 'PORT': '3306', } }
由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
#如下设置放置的与project同名的配置的 __init__.py文件中 import pymysql pymysql.install_as_MySQLdb()
3. 配置HTML页面的模板地址templates:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR),"templates"], # 指定html文件所在的位置目录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', ], }, }, ]
4. 配置静态文件(settings.py末尾添加)
STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
5. 提交表单时403临时解决方法:
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', # csrf 验证,如果不关闭 提交表单会报403 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
6. 关闭Dbug方式:
DEBUG = False
7.通过logging可以查看ORM翻译成的sql语句
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
8.session存储的相关配置
1.数据库存储session得方式(默认):
# Django默认支持Session,并且默认是将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 = 1209600 # Session的cookie失效日期(2周)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认) SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)
2.缓存配置(默认内存)
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置 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 = False # 是否每次请求都保存Session,默认修改之后才保存
3.文件配置
SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() 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 = False # 是否每次请求都保存Session,默认修改之后才保存
9.需要继承Django提供得Auth认证
# 在models文件中继承auth模块的userinfo表 from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): first_name = models.CharField(max_length=32) def __str__(self): return self.first_name
# settings.py文件中设置AUTH_USER_MODEL= app.需要继承得表 AUTH_USER_MODEL="blog.UserInfo"
10.配置用户上传文件的默认路径
用户上传的数据会根据该目录,结合UserInfo表中upload_to='avatarDir/' 参数来拼接当前目录
1.用户表models.py 详情
from django.db import models # Create your models here. from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): """ 用户信息 """ nid = models.AutoField(primary_key=True) nickname = models.CharField(verbose_name='昵称', max_length=32) telephone = models.CharField(max_length=11, blank=True, null=True, unique=True, verbose_name='手机号码') avatar = models.FileField(verbose_name='头像', upload_to='avatarDir/', default="avatar/default.png") create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True) blog = models.OneToOneField(to='Blog', to_field='nid', null=True) def __str__(self): return self.username
2.settings.py 配置 MEDIA_ROOT 路径
MEDIA_ROOT = os.path.join(BASE_DIR, "blog", "media") MEDIA_URL = "/media/"
3.如需要用户通过Url可以直接访问上传的文件,需要配置 urls.py指定 MEDIA_ROOT 路径
from django.conf.urls import url from django.contrib import admin from blog import views from django.views.static import serve from meblog import settings urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^get_valid_img/', views.get_valid_img), url(r'^index/', views.index), url(r'^reg/', views.reg), # media 配置 图片存储路径可直接访问 url(r'^media/(?P<path>.*)$', serve, {"document_root":settings.MEDIA_ROOT}), ]