在Django中放置由css文件调用的图像的位置?

时间:2011-09-23 14:03:10

标签: python html css django templates

我在网上下载了一个模板,其中包含一个基本html文件,图像和一个css文件。现在我想在django中实现所有这些。

到目前为止,我尝试过这样但没有好的结果,页面会在没有css文件或没有图像的情况下呈现,或两者都有...好吧有些不对劲

settings.py:

MEDIA_ROOT = rel('resources')
MEDIA_URL = '/resources/'

base.html文件:

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

我已将我的图片和css文件放在资源文件夹和模板文件夹中,它不起作用,请帮忙

4 个答案:

答案 0 :(得分:2)

修改

我稍微离开了... STATIC_ROOT指的是Django将收集所有静态文件的目录。 STATICFILES_DIRS是静态文件的搜索路径列表。像这样:

settings.py:

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = PROJECT_ROOT + 'static/'

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL =  '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    "C:/www/django/static",
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

并将网址添加到urls.py:

urlpatterns += staticfiles_urlpatterns()

原始答案:

这可能会令人困惑。 MEDIA_ROOT目录用于通过文件上载表单上传的文件。对于可由客户端请求直接访问的物理文件(例如样式表,脚本和图像),您必须使用STATIC_ROOT和STATIC_URL。 STATIC_ROOT必须是我认为的绝对路径。

settings.py

# the url: myserver.com/static/
STATIC_URL = '/static/'
# refers to this directory: 
STATIC_ROOT = '/home/user/static server files'

假设你把你的css放在“/ home / user / static server files / css /”中,然后像这样引用它们:

base.html文件

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

答案 1 :(得分:1)

假设您现在正在开发服务器。

MEDIA_URL ='http:// localhost / media /'

计算django和网站的路径 用作各种其他路径的起点 DJANGO_ROOT = os.path.dirname(os.path.realpath(django.__file__)) SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) PROJECT_ROOT = os.path.dirname(__file__)

TEMPLATE_DIRS = ( os.path.join(SITE_ROOT, 'templates/'), )

MEDIA_ROOT = os.path.join(SITE_ROOT, 'templates/media/')

上面应该可以解决你的问题,因为我很适合我。

在引用保存在“模板/媒体”中的css文件时 <link href="/media/css/base/base.css" rel="stylesheet" type="text/css"></link>

希望这可以帮助你

答案 2 :(得分:0)

不幸的是,这并没有帮助。我在settings.py中找不到变量STATIC_URL / ROOT,所以我如上所述添加了它,也在base.html中添加了变量,但渲染仍无法找到css文件。

我做的另一个是调查的代码。我得到了一个很好的公共应用程序的源代码,并检查了base.html,它就像这样说:

<link rel="stylesheet" href="{{ cssRootUrl }}style.css"

然后我去检查settings.py并且没有在那里定义cssRootUrl。所以我不知道这种变量还能隐藏在哪里......

答案 3 :(得分:0)

这可以解决您的问题。我建议你命名你的文件夹&#34;静态&#34;对于您正在使用的静态文件(css,js和images)。

  1. 打开您的settings.py和

    - 在你文件的第一行添加:

    导入os.path

    - 将您的STATIC_ROOT值更改为:

    STATIC_ROOT = os.path.join(PROJECT_DIR,&#39; static /&#39;)

    - 将您的STATIC_URL值更改为:

    STATIC_URL =&#39; / static /&#39;

  2. 创建一个名为&#34; static&#34;的文件夹。在您的项目根目录中。

  3. 为您的静态文件创建一个文件夹,如css,javascript等。我建议您为不同类型的文件使用不同的文件夹。
  4. 打开项目的urls.py. - 添加到您的导入:导入设置 - 添加到网址模式:

    (r&#39;(?:。*?/)?(?P(css | jquery | jscripts | images)/。+)$&#39;,&#39; django.views.static.serve& #39;,{&#39; document_root&#39 ;: settings.STATIC_ROOT}),

    注意:在此示例中,我的静态文件夹中有名为css,jquery,jscripts和images的文件夹。

  5. 在您的模板中添加:

  6. 用于css文件:(在本例中,default.css是css文件的名称)

    <link href="/{{ STATIC_ROOT }}css/default.css" rel="stylesheet" type="text/css" media="all" />
    

    for javascript:

    <script type="text/javascript" src="/{{ STATIC_ROOT }}jquery/jquery.js"></script>