search
HomeBackend DevelopmentPython TutorialDetailed explanation of calling static files in Django learning

Detailed explanation of calling static files in Django learning

May 08, 2018 pm 01:44 PM
djangodocumenttransfer

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 collectstatic

django 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 folder

2. 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_DIRS


STATICFILES_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)


3.STATIC_URL

So far, the static file mechanism can work, but there is one Question, can I directly access the static files in my project through URL? The answer is definitely yes, but please note that you are accessing it in the browser, and you cannot enter the local absolute address of your static files, for example The local address of one of my pictures is /home/mysite/common_static/myapp/photo.png


Then it is impossible for others to directly enter it on the browser:

http://192.168. 1.2:8000/home/mysite/common_static/myapp/photo.png

In this way, the browser will report an error, there is no such page


So how does django allow browsing The browser can also access static files on the server. As mentioned before, direct access to the local address of the server is not possible, so a mapping is needed. Django uses STATIC_URL to allow the browser to directly access static files, such as:

STATIC_URL = '/static/'

Then you can enter on the browser:

http://192.168.1.2:8000/static/common_static/myapp/photo.png

Then it is equivalent to accessing /home/mysite/common_static/myap/photo.png

So on the browser, use the specific content of the prefix STATIC_URL to map STATIC_ROOT,

HTTP: //192.168.1.2:8000/static is equivalent to STATIC_ROOT of the local address

Related recommendations:

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!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Python: A Deep Dive into Compilation and InterpretationPython: A Deep Dive into Compilation and InterpretationMay 12, 2025 am 12:14 AM

Pythonusesahybridmodelofcompilationandinterpretation:1)ThePythoninterpretercompilessourcecodeintoplatform-independentbytecode.2)ThePythonVirtualMachine(PVM)thenexecutesthisbytecode,balancingeaseofusewithperformance.

Is Python an interpreted or a compiled language, and why does it matter?Is Python an interpreted or a compiled language, and why does it matter?May 12, 2025 am 12:09 AM

Pythonisbothinterpretedandcompiled.1)It'scompiledtobytecodeforportabilityacrossplatforms.2)Thebytecodeistheninterpreted,allowingfordynamictypingandrapiddevelopment,thoughitmaybeslowerthanfullycompiledlanguages.

For Loop vs While Loop in Python: Key Differences ExplainedFor Loop vs While Loop in Python: Key Differences ExplainedMay 12, 2025 am 12:08 AM

Forloopsareidealwhenyouknowthenumberofiterationsinadvance,whilewhileloopsarebetterforsituationswhereyouneedtoloopuntilaconditionismet.Forloopsaremoreefficientandreadable,suitableforiteratingoversequences,whereaswhileloopsoffermorecontrolandareusefulf

For and While loops: a practical guideFor and While loops: a practical guideMay 12, 2025 am 12:07 AM

Forloopsareusedwhenthenumberofiterationsisknowninadvance,whilewhileloopsareusedwhentheiterationsdependonacondition.1)Forloopsareidealforiteratingoversequenceslikelistsorarrays.2)Whileloopsaresuitableforscenarioswheretheloopcontinuesuntilaspecificcond

Python: Is it Truly Interpreted? Debunking the MythsPython: Is it Truly Interpreted? Debunking the MythsMay 12, 2025 am 12:05 AM

Pythonisnotpurelyinterpreted;itusesahybridapproachofbytecodecompilationandruntimeinterpretation.1)Pythoncompilessourcecodeintobytecode,whichisthenexecutedbythePythonVirtualMachine(PVM).2)Thisprocessallowsforrapiddevelopmentbutcanimpactperformance,req

Python concatenate lists with same elementPython concatenate lists with same elementMay 11, 2025 am 12:08 AM

ToconcatenatelistsinPythonwiththesameelements,use:1)the operatortokeepduplicates,2)asettoremoveduplicates,or3)listcomprehensionforcontroloverduplicates,eachmethodhasdifferentperformanceandorderimplications.

Interpreted vs Compiled Languages: Python's PlaceInterpreted vs Compiled Languages: Python's PlaceMay 11, 2025 am 12:07 AM

Pythonisaninterpretedlanguage,offeringeaseofuseandflexibilitybutfacingperformancelimitationsincriticalapplications.1)InterpretedlanguageslikePythonexecuteline-by-line,allowingimmediatefeedbackandrapidprototyping.2)CompiledlanguageslikeC/C transformt

For and While loops: when do you use each in python?For and While loops: when do you use each in python?May 11, 2025 am 12:05 AM

Useforloopswhenthenumberofiterationsisknowninadvance,andwhileloopswheniterationsdependonacondition.1)Forloopsareidealforsequenceslikelistsorranges.2)Whileloopssuitscenarioswheretheloopcontinuesuntilaspecificconditionismet,usefulforuserinputsoralgorit

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools