Django 1.6的静态文件

时间:2013-11-16 00:51:26

标签: django file css3 python-2.7 static

我整天都没有工作。我在这里看到过至少20篇关于相同主题的帖子,他们对不同的建议有所不同,对我来说没什么用。 使用Python 2.7。+运行Django 1.6 我正在尝试从django教程加载民意调查应用程序的CSS。

项目布局

Project
   |-polls
       |-static
           |-polls
                style.css
   |static

这是settings.py

STATIC_URL = '/static/'
STATIC_ROOT = '/home/bri6ko/DjangoProjects/django1.6/PoolsDjangoProject/static'

模板代码

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">

urls.py

urlpatterns = patterns(...)+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

轮询/ urls.py

urlpatterns = patterns(....,url(r'^static/(?P<path>.*)$', 'django.views.static.serve',                                        {'document_root': '/home/bri6ko/DjangoProjects/django1.6/PoolsDjangoProject/'}),)

运行之后:python manage.py collectstatic,收集所有内容,并使用admin和polls文件夹和文件相应地填充root上的静态文件夹。

我启动服务器:python manage.py runserver一切正常,除了没有加载css

这是我在检查html时从Chrome控制台获得的内容

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

看起来很好,但提供以下输出

[16/Nov/2013 00:44:41] "GET / HTTP/1.1" 404 2141
[16/Nov/2013 00:44:45] "GET /polls/ HTTP/1.1" 200 820
[16/Nov/2013 00:44:45] "GET /static/polls/style.css HTTP/1.1" 404 1649

任何帮助将不胜感激。我一步一步地跟着一切。我不知道该怎么办

更新

DEBUG=True

完整的urls.py

from django.conf.urls import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin
from PoolsDjangoProject import settings
from django.conf.urls.static import static

admin.autodiscover()

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'PoolsDjangoProject.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^polls/', include('polls.urls', namespace='polls')),
url(r'^admin/', include(admin.site.urls)),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

完整民意调查/ urls.py

来自django.conf.urls导入模式,网址    导入视图

urlpatterns = patterns('',
                   url(r'^$', views.IndexView.as_view(), name='index'),
                   url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
                   url(r'^(?P<pk>\d+)/results/$',     views.ResultsView.as_view(),name='results'),
                   url(r'^(?P<poll_id>\d+)/vote/$', 'polls.views.vote', name='votes'),
                   url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
                                    {'document_root':       '/home/bri6ko/DjangoProjects/django1.6/PoolsDjangoProject/'}),
)

当我尝试访问

http://127.0.0.1:8000/static/polls/style.css

我得到了

Page not found (404)
'polls/style.css' could not be found

4 个答案:

答案 0 :(得分:9)

我发现在按照

中的步骤后重启正在运行的服务器是必要的

https://docs.djangoproject.com/en/1.6/intro/tutorial06/#customize-your-app-s-look-and-feel

以便获取新创建的静态目录。该步骤未在教程中列出。我已经开了一张票,请求加入。

我意识到这个答案不太可能对您的具体案例有所帮助,但在搜索将静态目录添加到示例民意调查应用程序时出现问题时,Google会突出显示此问题。

答案 1 :(得分:5)

我也遇到了这个问题。我的问题是我在已安装的应用程序中没有 main 应用程序,无论其中包含wsgi.py的文件夹,都需要在INSTALLED_APPS中。

答案 2 :(得分:1)

我也在努力解决这个问题。

以下是我解决它的方法(DEBUG=True):

  1. 在创建项目和多个应用程序之后,我创建了一个名为“static”的目录,该目录位于我的应用程序目录旁边(与.manage.py相同)。
  2. 我在设置
  3. 中将我的静态网址设置为'/static/'
  4. 我将静态根设置为STATIC_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), '../../static/').replace('\\','/'))BASE_DIR = os.path.dirname(os.path.dirname(__file__))
  5. 我将我的staticfiles dirs设置为STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"), '/Users/username/sites/containing_dir/project_dir/static/',)(假定为OSX路径)
  6. 我为我的项目
  7. 添加了+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)到我的urls.py.

    我的静态媒体现在由http://127.0.0.1:8000/static/css/styles.css提供(假设是runserver命令)。

    评论是否需要添加说明!

答案 3 :(得分:0)

首先必须知道Django不负责在生产服务器上提供静态文件。但是,为了调试,它在开发过程中DEBUG=True时会为它们提供服务。

要在debug=true时提供静态文件,您必须 。我不知道为什么它会在新手之间制造如何设置它的混乱。以下内容应该可以帮助您为生产模式和开发模式创建静态文件

开发模式:何时DEBUG=True

  1. 创建您的项目django-admin.py startproject mysite
  2. 制作您的应用manage.py createapp myapp
  3. 在settings.py
  4. 中将myapp添加到INSTALLED_APPS
  5. myapp目录中,创建一个文件夹static
  6. myapp/static目录中,保存文件myfile.css
  7. 在settings.py中,为STATIC_ROOT文件夹提供有效地址以存储静态文件。如果您要将收集的文件存储在os.path.join(os.path.abspath(os.path.dirname(__file__)), "mystatic"),则可能类似于mysite/mysite/mystatic
  8. 运行manage.py collectstatic;现在你必须看到你在上面提到的目录中收集的静态文件。如果它不存在,它也应该创建一个。您可以随意放置任何目录。
  9. 测试网址http://127.0.0.1:8000/static/myfile.css
  10. 如果它还没有工作,请尝试重新启动网站。动态无法识别新文件!