pinax是如何在accounts基础项目中学习访问css文件的



我刚开始使用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。

  1. Pinax使用django静态文件服务于静态文件。您可以在settings.py中找到STATIC_ROOTSTATICFILES_DIRSSTATICFILES_FINDERS变量。

  2. 在Pinax账户库项目的url.py中,你可以找到这样的行:url(r"", include("staticfiles.urls")),它定义了静态文件访问。

  3. 为了获得更好的视图,django-statifiles在Debug模式下覆盖Django默认的runserver命令,它是用StatifFilesHandler重写Django defalt WSGIHandler。因此,当您运行python manage.py runserver并访问该站点时,它将确定该请求是否为静态文件请求,如果为true,它将在INSTALLED_APPS中找到存储在STATICFILES_DIRS设置中的文件(使用staticfiles.finders.FileSystemFinder)和每个应用程序的static子目录(使用staticfiles.finders.AppDirectoriesFinder)。

  4. 这里,pinax_theme_bootstrap是一个Django应用程序,只包含static目录下的静态文件,默认由pinax帐户库项目安装。静态文件访问由staticfiles应用程序解决,因此在pinax_theme_bootstrap下找不到任何urls.py文件。

  5. 当您希望将项目部署到产品环境中时。您应该使用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的子目录。

相关内容

  • 没有找到相关文章

最新更新