我刚开始使用Pinax 0.9a2。基本配置,并部署了"accounts"项目。我注意到,在已安装的应用程序中,我有"pinax_theme_bootstrap"。主页面正确显示,并带有基本应用程序主题的css。如果我浏览页面源代码,在各种各样的东西中,我有这个用于css
http://localhost:8000/site_media/static/css/bootstrap.min.css
关键是,我找不到这条线的来源,也找不到它是如何实际供应的。我知道它可能是由pinax_theme_bootstrap应用程序生成的,但我不明白:如果其中没有urls.py来解析上面的行并传递文件,那么这个应用程序应该如何操作?
文件存在并且在的完整路径中
MacQuela:~/Work/Projects/test/test/lib/python2.7/site-packages/pinax_theme_bootstrap/static/css $ ls
bootstrap.min.css extra.css
当涉及到静态声明时,这是settings.py
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
# URL that handles the static files like app media.
# Example: "http://media.lawrence.com"
STATIC_URL = "/site_media/static/"
# Additional directories which hold static files
STATICFILES_DIRS = [
os.path.join(PROJECT_ROOT, "static"),
]
STATICFILES_FINDERS = [
"staticfiles.finders.FileSystemFinder",
"staticfiles.finders.AppDirectoriesFinder",
"staticfiles.finders.LegacyAppDirectoriesFinder",
"compressor.finders.CompressorFinder",
]
没有指定pinax可以在哪里找到css。
我的评论最终被你的问题淹没了,所以我决定试着对答案进行摇摆。
bootstrap.css包含在pinax_theme_bootstrap应用程序中,您可以在theme_base.html模板中看到:https://github.com/pinax/pinax-theme-bootstrap/blob/master/pinax_theme_bootstrap/templates/theme_base.html
它引用了django静态位置,该位置是从您的settings.py选项中解析的。现在,你在一个稍微修改过的位置看到了这个文件的缩小版本,这让我相信你有另一个django-static*应用程序可以为你执行css/js的缩小。很可能是compressor
应用程序正在缩小。
更新
让您感到困惑的部分实际上是django如何提供静态文件:https://docs.djangoproject.com/en/dev/howto/static-files/
这里没有黑魔法。它非常简单。项目中的每个应用程序都可以包含自己的静态/目录,该目录将包含该应用程序的静态媒体。你会注意到,在你的settings.py和上面的链接中,有STATIC选项和其他包含(如finders)的组合。这些将定位每个应用程序下的静态媒体。它还允许应用程序不必知道整个绝对url。相反,他们可以在模板中使用{{STATIC}}来获取根位置。
现在,当您使用"runserver"运行开发服务器时,它将为您解析所有静态媒体。这就是找到引导css的原因。Ita在theme_base.html中被引用为静态url。
当您准备好进行生产时,您显然将不再使用django-dev服务器。然后,您将运行一个类似"的命令/manage.py collectstatic,它将把所有静态媒体聚集到一个位置,然后您可以通过您选择的web服务器进行服务器服务。我希望这能为你澄清。最好查看django文档,因为pinax就是django。
-
Pinax使用django静态文件服务于静态文件。您可以在
settings.py
中找到STATIC_ROOT
、STATICFILES_DIRS
和STATICFILES_FINDERS
变量。 -
在Pinax账户库项目的
url.py
中,你可以找到这样的行:url(r"", include("staticfiles.urls"))
,它定义了静态文件访问。 -
为了获得更好的视图,
django-statifiles
在Debug模式下覆盖Django默认的runserver
命令,它是用StatifFilesHandler
重写Django defaltWSGIHandler
。因此,当您运行python manage.py runserver
并访问该站点时,它将确定该请求是否为静态文件请求,如果为true,它将在INSTALLED_APPS
中找到存储在STATICFILES_DIRS
设置中的文件(使用staticfiles.finders.FileSystemFinder
)和每个应用程序的static
子目录(使用staticfiles.finders.AppDirectoriesFinder
)。 -
这里,
pinax_theme_bootstrap
是一个Django应用程序,只包含static
目录下的静态文件,默认由pinax帐户库项目安装。静态文件访问由staticfiles
应用程序解决,因此在pinax_theme_bootstrap
下找不到任何urls.py
文件。 -
当您希望将项目部署到产品环境中时。您应该使用
python manage.py collectstatic
命令来收集STATIC_ROOT
目录下所有有用的静态文件。然后您可以通过Nginx或其他http服务器为该目录提供服务。
当您访问http://localhost:8000/site_media/static/css/bootstrap.min.css,那么Django会在urls.py
中匹配这个url,直到最后一个staticfiles
配置,每个特定的配置才会匹配。因此,此访问将由staticfiles
解决。根据您的STATICFILES_FINDER
配置,staticfiles
首先在您的项目下找到static
目录,如果结果为none,则它会在INSTALLED_APPS
中找到每个名为static
的子目录。