关于Django中settings.py的STATIC

    xiaoxiao2022-06-30  150

    前言:

    之前在学校参加创新创业比赛的时候,应为用到Django框架进行网站的开发,但是当时大二的我还有接触到类似web的框架和网站开发的学习,自己在家憋了一周多,终于学会使用了Django进行简单网站的开发,但是框架的一些细节问题和配置问题并不是很明确,最近老师讲述了Django的框架,所以我决定在仔细的研究一下这个Django的配置的相关操作。

    settings.py的配置:

    1.BASE_DIR:获取项目的目录位置

    2.SECRET_KEY:有关安全性问题的一个属性

    3. DEBUG:设置成False之后看不到详细错误提示

     4.是为了限定请求中的host值,以防止黑客构造包来发送请求。只有在列表中的host才能访问

    STATIC_URL是什么?

    对外提供WEB访问时的URL地址

    STATIC_ROOT是什么?

    当DEBUG设置成False之后,下面的STATICFILES_DIRS下的静态文件将会失效,那么如何此时STATIC_ROOT将会发挥它重要的作用

    settings.py

    STATIC_URL = '/static/'#这个静态文件的名称必须和项目里面的文件名称相同,对外提供WEB访问时的URL地址 STATIC_ROOT = os.path.join(BASE_DIR,'static1')## 执行collectstatic命令后会将项目中的静态文件(包括STATICFILES_DIRS、自带admin的静态文件)收集到该目录下面来(所以不应该在该目录下面放置自己的一些静态文件,因为会覆盖掉) # 设置图片等静态文件的路径,# 开发阶段放置项目自己的静态文件,不能包含STATIC_ROOT路径 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),#这个静态文件的名称必须和项目里面的文件名称相同 )

    我们在dos(针对windows)中执行 命令(在对应的项目中执行命令)python manage.py collectstatic他会将STATICFILES_DIRS和下的静态文件和admin静态文件放到我在STATIC_ROOT 中命名为static1中,成功之后static1将会有对应所有的静态文件,这个时候STATICFILES_DIRS已经没有了用处。但是在urls.py中还需要添加对应语句才可以。

    urls.py

    from . import settings#导入settings.py from django import views urlpatterns = [ path('admin/', admin.site.urls), re_path(r'^hello/(?P<int>\d+)/',search.HelloWorld), re_path(r'^static/(?P<path>.*)$', views.static.serve, {"document_root": settings.STATIC_ROOT}), path('check/',search.LoginCheck), ]

     re_path(r'^static/(?P<path>.*)$', views.static.serve, {"document_root": settings.STATIC_ROOT})这是关键!

    STATICFILES_DIRS是什么?

    当DEBUG设置成False之后,该静态目录已经失效,只有在为True的时候才会可以使用里面的静态文件

    STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"),#这个静态文件的名称必须和项目里面的文件名称相同 )

     


    最新回复(0)