Home > Article > Backend Development > Detailed explanation of calling static files in Django learning
This article mainly introduces the detailed explanation of calling static files for Django learning. It has certain reference value. Now I share it with you. Friends in need can refer to it.
Preface
Static files refer to js, css, pictures, videos and other files in the website. This article mainly introduces the relevant content about static file calling in Django learning and shares it with everyone. Reference study, not much to say below, let’s take a look at the detailed introduction
The method is as follows
1.settings .py static file related sample code and instructions:
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.8/howto/static-files/ STATIC_URL = '/static/' # 当运行 python manage.py collectstatic 的时候 # STATIC_ROOT 文件夹 是用来将所有STATICFILES_DIRS中所有文件夹中的文件,以及各app中static中的文件都复制过来 # 把这些文件放到一起是为了用apache等部署的时候更方便 STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static') # 其它 存放静态文件的文件夹,可以用来存放项目中公用的静态文件,里面不能包含 STATIC_ROOT # 如果不想用 STATICFILES_DIRS 可以不用,都放在 app 里的 static 中也可以 STATICFILES_DIRS = ( os.path.join(BASE_DIR, "common_static"), '/path/to/others/static/', # 用不到的时候可以不写这一行 ) # 这个是默认设置,Django 默认会在 STATICFILES_DIRS中的文件夹 和 各app下的static文件夹中找文件 # 注意有先后顺序,找到了就不再继续找了 STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder" )
##2.STATIC_ROOT
STATIC_ROOT = os.path.join(BASE_DIR, 'collect_static')#BASE_DIR是项目的绝对地址STATIC_ROOT is the directory where all static files are aggregated when deploying static files (pyhton manage.py collectstatic). STATIC_ROOT should be written as an absolute address. Here, for example, mine The project mysite is /home/mysite/, then STATIC_ROOT is /home/mysite/collect_static/When deploying the project, enter in the terminal:
python manage.py collectstaticdjango will copy all static files to the STATIC_ROOT folder
3.STATICFILES_DIRS
STATIC_ROOT only comes into play during deployment, but in actual situations , there are two general placement locations for static files: 1. One is to create a new static folder in each app and put the static files in it. When loading static files, for example, in the template Static files are used in django will automatically search for the static folder in each app (so, don’t write the wrong name of the folder, otherwise django will not be able to find your folder2. Another option is to create a public folder outside all app files. Because some static files are not unique to a certain app, you can put them in In a public folder for easy management (note that creating a public static file folder is just a way to facilitate management, but it is not necessary. app can apply static files across apps because Finally, all static files will exist in STATIC_ROOT) The question now is how to let django know that you put some static files in public folders other than app, then you need to configure STATICFILES_DIRSSTATICFILES_DIRS = ( os.path.join(BASE_DIR, 'common_static'), )STATICFILES_DIRS tells django to first look for static files in STATICFILES_DIRS, and then look for them in the static folder of each app (note that django looks for static files It is a lazy search. It stops searching when it finds the first one)
http://192.168. 1.2:8000/home/mysite/common_static/myapp/photo.png
STATIC_URL = '/static/'Then you can enter on the browser:
http://192.168.1.2:8000/static/common_static/myapp/photo.png
HTTP: //192.168.1.2:8000/static is equivalent to STATIC_ROOT of the local address
A brief analysis of STATIC_ROOT, STATIC_URL and STATICFILES_DIRS in Django
The above is the detailed content of Detailed explanation of calling static files in Django learning. For more information, please follow other related articles on the PHP Chinese website!