Django配置相关及其它

配置

模板

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'templates1'),  # 根目录->templates1
            os.path.join(BASE_DIR, 'templates2'),  # 根目录->templates2
        ],  # 配置render()函数在上述路径下寻找模板
        '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',
            ],
        },
    },
]
Code

静态文件

# 静态文件保存目录的别名
STATIC_URL = '/static/'

# 静态文件存放文件夹
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static1"),
    os.path.join(BASE_DIR, "static2"),
]
# 上述配置的效果就是 请求指定别名会在指定目录下寻找指定文件
# 例:127.0.0.1:8000/static/test.css 会在STATICFILES_DIRS节中配置的每个目录寻找名为test.css的文件
Code

数据库连接信息

 1 DATABASES = {
 2     'default': {
 3         'ENGINE': 'django.db.backends.mysql',  # 连接的数据库类型
 4         'HOST': '127.0.0.1',  # 连接数据库的地址
 5         'PORT': 3306,  # 端口
 6         'NAME': "testdb",  # 数据库名称
 7         'USER': 'root',  # 用户
 8         'PASSWORD': 'root'  # 密码
 9     }
10 }
Code

控制台输出执行的sql

 1 LOGGING = {
 2     'version': 1,
 3     'disable_existing_loggers': False,
 4     'handlers': {
 5         'console': {
 6             'level': 'DEBUG',
 7             'class': 'logging.StreamHandler',
 8         },
 9     },
10     'loggers': {
11         'django.db.backends': {
12             'handlers': ['console'],
13             'propagate': True,
14             'level': 'DEBUG',
15         },
16     }
17 }
Code

Session相关

  • 引擎

    • 数据库(默认)
      SESSION_ENGINE = 'django.contrib.sessions.backends.db'
    • 缓存
      SESSION_ENGINE = 'django.contrib.sessions.backends.cache'  # 引擎
      SESSION_CACHE_ALIAS = 'default'  # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置
    • 缓存+数据库
      SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
    • 加密
      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 = False  # 是否每次请求都保存Session,默认修改之后才保存(默认)
    View

认证相关

登录页地址

LOGIN_URL = '/login/'  # 这里配置成你项目登录页面的路由

替换默认auth_user表

AUTH_USER_MODEL = "app名.User表名"

跨域配置

  • 安装

    pip install django-cors-headers
  • settings配置

    INSTALLED_APPS = (
        'corsheaders',
    )
    MIDDLEWARE = [
        'corsheaders.middleware.CorsMiddleware',
    ]
    CORS_ORIGIN_WHITELIST = (
        '127.0.0.1:8080',
        'localhost:8080', #凡是出现在白名单中的域名,都可以访问后端接口
    )
    CORS_ALLOW_CREDENTIALS = True  # 指明在跨域访问中,后端是否支持对cookie的操作

其它

上传文件

  • 文件上传页面

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>文件上传测试</title>
     6 </head>
     7 <body>
     8 <form action="/img_upload/" method="post" enctype="multipart/form-data">
     9     <p>title: <input type="text" name="title"></p>
    10     <p>img: <input type="file" name="file" accept="image/*"></p>
    11     <p><input type="submit" value="submit"></p>
    12     <p><img src="{{ img_link }}"></p>
    13 </form>
    14 </body>
    15 </html>
    /templates/img_upload.html
  • 模型

     1 from django.db import models
     2 
     3 
     4 class Image(models.Model):
     5     title = models.CharField(max_length=100, verbose_name=u'标题')
     6     # upload_to参数可指定文件保存位置 (相对配置中的MEDIA_ROOT对应路径)
     7     image = models.ImageField(upload_to='image/%Y/%m/%d/%H/%M/%S', max_length=400)
     8 
     9     def __str__(self):
    10         return self.title
    /[app name]/models.py
  • 路由

    1 from django.conf.urls import url
    2 from img_upload import views
    3 from django.views.static import serve  # 导入相关静态文件处理的views控制包
    4 from django_test.settings import MEDIA_ROOT  # 导入项目文件夹中setting中的MEDIA_ROOT绝对路径
    5 
    6 urlpatterns = [
    7     url(r'^img_upload/', views.img_upload),
    8     url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT}),
    9 ]
    /[project name]/urls.py
  • 视图

     1 from django.shortcuts import render
     2 from img_upload import models
     3 
     4 
     5 def img_upload(request):
     6     img_link = ''
     7     if request.method == 'POST':
     8         title = request.POST.get('title')
     9         img_file = request.FILES.get('file')
    10         img_obj = models.Image.objects.create(title=title, image=img_file)
    11         img_link = img_obj.image.url
    12     return render(request, 'img_upload.html', locals())
    /[app name]/views.py
  • 配置

    1 MEDIA_URL = '/media/'
    2 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    3 
    4 STATIC_URL = '/static/'
    5 STATICFILES_DIRS = [
    6     os.path.join(BASE_DIR, 'static'),
    7     os.path.join(BASE_DIR, 'media'),
    8 ]
    /[project name]/settings.py
  • 效果

    效果:
    从效果中可以看出,图片在向db保存数据的过程中存储到了模型中指定的位置,而db中保存的只是图片的路径。
posted @ 2018-05-08 20:23  zze  阅读(204)  评论(0编辑  收藏  举报