【问题标题】:Setting up django for css file为 css 文件设置 django
【发布时间】:2012-10-03 15:51:19
【问题描述】:

我是 django 的新手,正在尝试创建个人技术博客。我在 webfaction 上托管。我已经使用this video 设置了博客。但是样式表不起作用。我跟着the step-by-step procedure创建了webfaction提到的静态文件,但stlyesheet仍然无法正常工作。

我创建了一个静态应用程序:staticapp 并将其添加到网站中,并使用/static 如 webfaction 文档中所述。

settings.py:

  STATIC_ROOT = 'home/myaccount/webapps/staticapp'
  STATIC_URL = 'http://myblogtest.myaccount.webfactional.com/static'
  STATICFILES_DIRS = ( 'junk','static',)


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
     'django.contrib.admin',
     'django.contrib.admindocs',
     'blog',
     )

我从我的 html 页面引用如下:

 <link rel="stylesheet" type="text/css" href="static/style/style.css" />

我是否缺少任何步骤?我可以看到很多答案说要在urls.py 中添加代码 sn-p,但 Webfaction 的文档中没有提到它。所以我没有这样做。

我可以看到很多人都面临过同样的问题,但答案对我没有帮助,因为我是新手。请帮我设置这个。 :)

【问题讨论】:

    标签: python css django webfaction


    【解决方案1】:

    STATIC_ROOT 需要有一个前置斜杠/,即/home... 不是 home...

    不要static 目录添加到STATICFILES_DIRS。我允许你用最近的钝物打任何建议你这样做的人。 static 目录在开发中应该存在,而在生产中它只能通过python manage.py collectstatic 创建或修改。

    务必将您的静态资源存储在每个应用程序的单独 static 目录或完全不同的项目级目录中,即此目录不应与 MEDIA_ROOT 或 @987654331 的目录相同@。然后,将 this 目录添加到STATICFILES_DIRS

    在 Django 1.4+ 中,您应该在模板中使用 {% static %} 模板标签:

    {% load static from staticfiles %}
    <img src="{% static "images/hi.jpg" %}" alt="Hi!" />
    

    这将自动为您附加 URL 的 STATIC_URL 部分,因此您提供的路径参数应该是相对的。

    在 Django 1.3 中,在确保 'django.core.context_processors.static' 出现在 TEMPLATE_CONTEXT_PROCESSORS 设置中的某个位置之后,您将使用 {{ STATIC_URL }}。您的视图还需要使用RequestContext,这意味着使用基于类的视图、render 方法,或者将context_instance=RequestContext(request) 传递给render_to_response

    如果您希望 Django 在开发中轻松提供静态文件,您可以在 urls.py 末尾添加以下内容:

    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()
    

    这将在生产环境中工作 (DEBUG=False)。对于生产,您需要运行python manage.py collectstatic,然后让您的前端网络服务器(nginx、Apache 等)为STATIC_URL 的目录提供服务。

    【讨论】:

      【解决方案2】:

      您已经在设置中定义了STATIC_URL;你应该在你的 html 模板中使用它

      <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/style/style.css">
      

      只要您没有从设置中的 TEMPLATE_CONTEXT_PROCESSORS 中删除任何内容,这应该可以工作。

      您还可以考虑使用资产管理器为您生成模板中的所有 JS 和 CSS 链接,而不是自己编写它们。 django-pipeline 真的很不错,还能帮你处理 JS 和 CSS 的拼接和压缩。

      【讨论】:

      • 尝试使用 {{ STATIC_URL }}。它没有帮助。您想知道有关我遵循的流程的任何其他信息吗?
      猜你喜欢
      • 2015-04-21
      • 2017-01-31
      • 1970-01-01
      • 2021-02-15
      • 2011-02-01
      • 2013-10-19
      • 2012-01-10
      • 2011-03-11
      • 2020-06-04
      相关资源
      最近更新 更多