如何在Django中加载和使用静态文件
静态文件,如图片、CSS或JS文件,通常在生产网站中通过不同的应用程序加载,以避免从同一服务器加载多个东西。这篇文章围绕着如何在Django中设置静态应用并从同一服务器上加载静态文件。
如何在Django中创建静态应用程序
让我们先创建一个新的项目,为此我们先创建一个虚拟环境。如果你还没有下载,请下载该软件包
pip install virtualenv
virtualenv geeks
geeks\Scripts\Activate
它将是这样的
现在安装Django
pip install django
现在我们将创建一个名为 “checkstatic “的Django项目。
//django-admin startproject projectname (template code)
django-admin startproject **checkstatic**
现在进入你的项目
对于windows系统,”cd checkstatic”
现在我们将为项目创建一个新的应用程序,名称为 “showstatic”。
//python3 manage.py startapp appname (template code)
python3 manage.py startapp showstatic
现在我们将在IDE中行走,我使用的是Visual studio代码,如果你使用的是相同的类型(代码.),在cmd中输入
我们要做的第一件事是在setting.py中,在第32行添加你的应用程序,像这样添加(你会从应用程序的apps.py文件中看到这个)。
INSTALLED_APPS = [
'showstatic.apps.ShowstaticConfig',
'django.contrib.admin',
'django.contrib.auth,
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
现在尝试运行一次服务器,以确认一切都在顺利进行。
python3 manage.py runserver
如果你看到这个页面,恭喜你成功迈出了第一步。
现在我们在主文件夹(checkstatic)内创建一个静态文件夹,在那里我们将保存我们的静态文件。人们可以在静态文件夹中添加你的文件(pdf、图片、文本文件,或任何你想要的东西)。
文件夹结构 –
现在你需要让Django知道你已经创建了一个静态文件夹,所以现在在settings.py文件中添加这一行。
在第121行下面 STATIC_URL = ‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
现在告诉django寻找你所添加的静态文件的位置,上面写道STATIC_URL = ‘/static/’
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'checkstatic/static/')
]
现在我们将编写一个命令,从我们的项目中带来/收集所有的静态文件,并将其带到一个单一的文件夹中。
python manage.py collectstatic
如果一切正常的话,这就是它的样子,大部分文件都是来自于管理部门,我们不需要担心这个问题。
在你的项目文件夹中,你会看到一个新的文件夹,名为 “静态”,而你的文件就在里面!!!”。
如何在Django中加载和使用静态文件?
现在检查一下,只需在showstatic中创建 “templates “文件夹,并创建一个名为home.html的文件来查看我们的静态文件。
{% load static %}
<img src = "{% static 'logo.png' %}" height="200" width="200" class="d-inline-block align-top">
<br>
<h1>Hi its working</h1>
现在要查看这个页面,我们需要给它一个路由,所以现在只需在checkstatic的url.py中加入这个内容
from django.contrib import admin
from django.urls import path
from showstatic import views
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.home,name='home'),
]
并在showstatic的views.py中加入以下内容
def home(request):
return render(request,'home.html')
现在运行服务器,看到
python3 manage.py runserver