我在网上下载了一个模板,其中包含一个基本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文件放在资源文件夹和模板文件夹中,它不起作用,请帮忙
答案 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)
我做的另一个是调查的代码。我得到了一个很好的公共应用程序的源代码,并检查了base.html,它就像这样说:
<link rel="stylesheet" href="{{ cssRootUrl }}style.css"
然后我去检查settings.py并且没有在那里定义cssRootUrl。所以我不知道这种变量还能隐藏在哪里......
答案 3 :(得分:0)
这可以解决您的问题。我建议你命名你的文件夹&#34;静态&#34;对于您正在使用的静态文件(css,js和images)。
打开您的settings.py和
- 在你文件的第一行添加:
导入os.path
- 将您的STATIC_ROOT值更改为:
STATIC_ROOT = os.path.join(PROJECT_DIR,&#39; static /&#39;)
- 将您的STATIC_URL值更改为:
STATIC_URL =&#39; / static /&#39;
创建一个名为&#34; static&#34;的文件夹。在您的项目根目录中。
打开项目的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的文件夹。
在您的模板中添加:
用于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>