问题一描述:
Django1.10 版本中框架中 settings.py 配置文件
DEBUG= True
ALLOWED_HOSTS = ['*'] #这样可以让所有来源的 ip 访问到后台
使用 python3 manager.py runserver 后访问,发现没有 CSS,js 样式。
网上查询得知:Django1.9 版本后静态文件目录需要创建。大概的意思就是在 settings.py 文件中添加一下配置部分:
- PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))#Static files(CSS, JavaScript, Images)#https: //docs.djangoproject.com/en/1.9/howto/static-files/
- STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles') STATIC_URL = ' / static / '#Extra places
- for collectstatic to find static files.STATICFILES_DIRS = (os.path.join(PROJECT_ROOT, 'static'), )
配置更改后,还要执行命令
- python3 manage.py collectstatic
执行这个的目的,就是从 Django 的扩展包中,将 admin 管理后台的 jss 和 css 等静态文件拷贝到配置文件中的 STATIC_ROOT 目录下。
这里还有一个问题 STATIC_ROOT 目录 和 STATICFILES_DIRS 作用差不多,只是前者是默认查看的目录。
执行后我们会看到,多出这一个目录
- __init__.py __pycache__ settings.py static这个需要手动创建,
- 不然报错
- staticfiles这个会自动创建urls.py wsgi.py
此时我们访问 http://ip:8000/admin,样式就都在了。
问题二:当我把 settings.py 文件中的 DEBUG 配置改成
Debug = False 后,尼玛发现访问又没有样式了。
这是为什么呢?于是看看官网的说明如下链接
https://devcenter.heroku.com/articles/django-assets
大概意思即是,放置于生产环境的 Django 框架,静态目录不应该通过 Django 直接提供访问,而是通过 nginx 提供对外访问。这时候我们看下之前配置的
nginx+uwsgi+django 框架中的 nginx 配置,如下:
- server {
- listen 80;
- server_name 127.0.0.1 charset UTF - 8;
- access_log /
- var / log / nginx / django_pro01_access.log;
- error_log /
- var / log / nginx / django_pro01_error.log;
- client_max_body_size 75M;
- location / {
- include uwsgi_params;
- uwsgi_pass 127.0.0.1 : 8000;
- uwsgi_read_timeout 2;
- }
- location / static {
- expires 30d;
- autoindex on;
- add_header Cache - Control private;
- alias / usr / share / nginx / django_pro01 / django_pro01 / staticfiles;##alias / usr / share / nginx / django_pro01 / static / ;
- }
- }
可以看出,已经配置了 / static 的访问方式了。
之前不能访问是路径配置错误,现在可以了。
来源: http://www.bubuko.com/infodetail-1868807.html