当前位置: 首页>后端>正文

静态页面放在nginx文件夹中 nginx django 静态文件

一、django加载静态文件
1、首先确保 django.contrib.staticfiles 已经添加到settings.INSTALLED_APPS中。
2、确保在 settings.py中设置了STATIC_URL。

STATIC_URL = '/static/'

3、 app 文件夹下创建一个文件夹 static

静态页面放在nginx文件夹中 nginx django 静态文件,静态页面放在nginx文件夹中 nginx django 静态文件_加载,第1张

4、在 settings.py中添加 STATICFILES_DIRS,

STATICFILES_DIRS = [os.path.join(BASE_DIR,"monitor/static")]

这里BASE_DIR是项目文件夹(quantmonitor),monitor是应用文件夹

5、引用
5.1单模板引用
在模版(html)中使用 load 标签加载 static 标签。
比如要加载在项目的 static 文件夹下image里 0001.jpg 的。那么示例代码如下:

{% load static %}	# 注意
<img src="{% static '/image/0001.jpg' % /}"

5.2全项目引用
如果不想每次在模版中加载静态文件都使用 load 加载static 标签,那么可以在 settings.py 中的TEMPLATES/OPTIONS 添加 ‘builtins’:[‘django.templatetags.static’],这样以后在模版中就可以直接使用 static 标签,而不用每个html的 load 了。

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',
            ],
            'builtins': ['django.templatetags.static'],     # 全项目引用静态文件
        },
    },
]

二、uwsgi加载静态文件(nginx调通后可关闭)
一般的方法是“映射”指定请求前缀到你的文件系统上的物理目录。

# --static-map mountpoint=path 选项可以实现此目的。
--static-map /images=/var/www/img	# 注意要写绝对路径

修改uwsgi.ini

# static-map = /static=<项目路径>/static	注意有两个=
static-map = /static=/data/monitor/static/	# 注意要写绝对路径

三、Nginx加载静态文件

location /static/ {
alias /data/wwwroot/quantmonitor/monitor/static/; #静态资源路径  注意绝对路径
}

这里配置的location /static 是说请求为/static的静态文件都去/root、wechat_huoyun/static下去找,也就是我们项目根目录下的static去找,而不是我们每个APP下的static文件下去找,网上有很多教程,关于static的配置写法也有很多,
注意alias和root的区别,
root /path相当于访问static的时候是访问/path/static,
而alias /path相当于访问static时是访问/path/。
所以你要是写了root /root/wechat_huoyun/static;nginx会去找/root/wechat_huoyun/static/static里找,那估计就找不到了。
Nginx其他配置详见centos7 部署网页实战记录django+uwsgi+nginx

四、文件同步

4.1settings文件修改:

ALLOWED_HOSTS = ["*"]	#

STATIC_URL = '/static/'     # 通过url直接访问我在项目中的静态文件
STATIC_ROOT = str(os.path.join(BASE_DIR, "monitor/static"))     # 静态文静聚合的目录,app以外的公共文件夹,不做聚合可以不用
# STATIC_ROOT = os.path.join(BASE_DIR, "monitor", "static"),
print(STATIC_ROOT)

STATICFILES_DIRS = [
    # ('css', os.path.join(STATIC_ROOT, 'css').replace('\','/') ),
    # ('js',os.path.join(STATIC_ROOT,'js').replace('\','/') ),
    ('image', os.path.join(STATIC_ROOT, 'image').replace('\', '/')),
    # ('upload',os.path.join(STATIC_ROOT,'upload').replace('\','/') ),
]

# print(STATICFILES_DIRS)

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

4.2urls文件
静态文件 调用路径

re_path(r'^/monitor/static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),

注意相对路径,要从项目根目录开始写,我的static存放位置不是直接在项目根目录
如果直接在项目根目录下建static文件夹,写成

re_path(r'^/static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),

4.3html文件
见本文第一条

五、几个注意点
1、本地修改的文件,要同步到服务器
2、本地文件夹目录,要与服务器一致
3、注意配置文件中标点符号使用半角
4、本地资源显示不出来,先看单独文件路径能否访问,再看静态引用是否正常

参考文献:
Django 模板加载静态文件

使用uWSGI提供静态文件 (更新至1.9)
https://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/StaticFiles.html

超详细的django1.8处理centos下nginx上处理静态文件步骤!

nginx配置访问本地静态资源

nginx location配置详细解释



https://www.xamrdz.com/backend/32z1938716.html

相关文章: