Py学习  »  问与答

django js,css静态文件问题(第一次发帖,求照顾)

可爱slider-weibo • 9 年前 • 11119 次点击  

小弟新手,html中引入css报错

{% extends 'web/base.html' %}
{% block js %}
    {% load staticfiles %}
            <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}blog/style.css" />
{#            <script type="text/javascript" src="{{ STATIC_URL }}js/jquery-1.8.3.min.js"></script>#}
{% endblock %}

setting部分内容如下:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'

# add by slider
TEMPLATE_DIRS = (
    os.path.abspath(os.path.join(BASE_DIR, 'templates')),
)

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = "/static/"
TINYMCE_DEFAULT_CONFIG = {
    'theme': 'advanced',
    'theme_advanced_toolbar_location' : 'top',
    'theme_advanced_toolbar_align' : 'left',
    'width': 600,
    'height': 400,
}

报错信息如下:

[13/Dec/2014 09:32:56] "GET /blog/ HTTP/1.1" 200 1208
[13/Dec/2014 09:32:56] "GET /blog/style.css HTTP/1.1" 404 2585
[13/Dec/2014 09:32:56] "GET /static/blog/style.css HTTP/1.1" 404 1646
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/836
 
11119 次点击  
文章 [ 9 ]  |  最新文章 9 年前
走遍北京的德福小猪-weibo
Reply   •   1 楼
走遍北京的德福小猪-weibo    9 年前

也可以这样写:

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

olivetree
Reply   •   2 楼
olivetree    9 年前

好像是这样 {{static blog/style.css}}

可爱slider-weibo
Reply   •   3 楼
可爱slider-weibo    9 年前

问题解决了 。

environment: django1.6 python2.7 mac
1.base setting:
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATIC_URL = "/static/"

2.remove "django.contrib.staticfiles" in INSTALL_APPS

3.ADD THIS FOLLOWING CODE IN PROJECT URLS.PY FILE.
from django.conf import settings
if settings.DEBUG:
   urlpatterns += patterns('', url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT }),
        url(r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}), )


4. YOU COULD USE STATIC FILE IN HTML FILE LIKE THIS:
<link rel="stylesheet" type="text/css" href="/static/blog/style.css" />
Ziv_Luther-weibo
Reply   •   4 楼
Ziv_Luther-weibo    9 年前

https://docs.djangoproject.com/en/1.6/howto/static-files/ 这个链接里面的说明 你看不明白吗? 至少你可以这么做。 setting.py 里面加上。 STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder',

'django.contrib.staticfiles.finders.DefaultStorageFinder',

) 还可以设上 STATICFILES_DIRS = ( "a", ) INSTALLED_APPS 里面要有 'django.contrib.staticfiles', 如果不想用这个,就得用其他方法。

然后在a这个目录下放你想放的文件是可以找到的。

这是因为你的 /static/blog/style.css 这个问题放错位置了。

你可以找一个APP 文件夹,在里面创建一个static 目录,放style.css

加入你的APP 叫 blog, 那么 blog/static/style.css 这个文件可以通过 /static/style.css 访问。 上限的时候,使用collectstatic 可以把所有APP 下面的static 文件夹里面的文件收集到一起。

云吞团团长-weibo
Reply   •   5 楼
云吞团团长-weibo    9 年前

STATIC_ROOT 是collectstatic时存放的目标文件夹(一般是在产品环境,静态资源由web server而不是django来serve),开发环境的话需要设置一下STATICFILES_DIRS (以及STATICFILES_DIRS 不能包含STATIC_ROOT )

爱情的枪
Reply   •   6 楼
爱情的枪    9 年前

我估计是目录设置有问题

可爱slider-weibo
Reply   •   7 楼
可爱slider-weibo    9 年前

看的不是很明白,有大神指导下吗?

可爱slider-weibo
Reply   •   8 楼
可爱slider-weibo    9 年前

@livevilwt 我这个是1.6的。 好像有点不一样

livevilwt
Reply   •   9 楼
livevilwt    9 年前