美文网首页
Django基础(六):settings.py

Django基础(六):settings.py

作者: 宇辰星君 | 来源:发表于2017-10-17 21:46 被阅读88次

参考源码django.conf.global_settings.py文件

  • BASE_DIR
    变量_file_指当前文件(包含这个代码的文件),os.path.dirname(file) 得到文件所在目录,再来一个os.path.dirname()就是目录的上一级,BASE_DIR 即为项目所在目录。
    我们在后面的与目录有关的变量都用它,这样使得移植性更强。
# settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

$ python manage.py shell
In [10]: from suynblog.settings import BASE_DIR
In [11]: print BASE_DIR
/root/suyn_website/suynblog
  • ALLOWED_HOSTS
    ALLOWED_HOSTS 允许你设置哪些域名可以访问,即使在 Apache 或 Nginx 等中绑定了,这里不允许的话,也是不能访问的。
    当 DEBUG=False 时,这个为必填项,如果不想输入,可以用 ALLOW_HOSTS = ['*'] 来允许所有的。

  • static

# settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')

## 共用的静态文件存放位置,不能包含 STATIC_ROOT
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "common_static"),
    '/var/www/static/',
)
## 默认的静态文件查找器
STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    # 'django.contrib.staticfiles.finders.DefaultStorageFinder',
]
$ python manage.py shell
In [12]: import os

In [13]: print os.path.join(BASE_DIR,'static')
/root/suyn_website/suynblog/static

静态文件存储位置:
各APP 中的 static 目录下(同样跟template类似,app/static/app/xx)
STATICFILES_DIRS设定路径下

部署时用 python manage.py collectstatic 就可以把这两个地方的静态文件收集到(复制到)STATIC_ROOT目录。

收集静态文件

$ python manage.py collectstatic

You have requested to collect static files at the destination
location as specified in your settings:

    /root/suyn_website/suynblog/static

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Copying '/root/suyn_website/suynblog/common_static/js/jquery.js'
Copying '/root/anaconda2/lib/python2.7/site-packages/bootstrap_admin/static/bootstrap_admin/config.json'
...
Copying '/root/anaconda2/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.js'
...
Copying '/root/suyn_website/suynblog/learn/static/learn/back.jpg'

???
其它参考办法(当你想为静态文件分配多个不同的网址时,可能会用上这个):
当然也可以自己指定静态文件夹, 在urls.py的最后边这样写

# static files
import os
from django.conf.urls.static import static
from django.conf import settings
if settings.DEBUG:
    media_root = os.path.join(settings.BASE_DIR,'media2')
    urlpatterns += static('/media2/', document_root=media_root)

# 或者
from django.conf.urls.static import static
 
urlpatterns = ...
 
urlpatterns += static('/media2/', document_root=media_root)
  • media
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

media文件夹用来存放用户上传的文件,与权限有关

  • template
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',
            ],
        },
    },
]

有时候有一些模板不是属于app的,比如 baidutongji.html, share.html等,可以放到路径/root/suyn_website/suynblog/templates

相关文章

网友评论

      本文标题:Django基础(六):settings.py

      本文链接:https://www.haomeiwen.com/subject/ivyjuxtx.html