Django 1.6的静态文件

Bri*_*6ko 6 django static file css3 python-2.7

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

项目布局

Project
   |-polls
       |-static
           |-polls
                style.css
   |static
Run Code Online (Sandbox Code Playgroud)

这是settings.py

STATIC_URL = '/static/'
STATIC_ROOT = '/home/bri6ko/DjangoProjects/django1.6/PoolsDjangoProject/static'
Run Code Online (Sandbox Code Playgroud)

模板代码

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = patterns(...)+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)

民调/ urls.py

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

运行之后: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">
....
Run Code Online (Sandbox Code Playgroud)

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

[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
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

DEBUG=True
Run Code Online (Sandbox Code Playgroud)

完整的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)
Run Code Online (Sandbox Code Playgroud)

完整民意调查/ urls.py

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

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/'}),
)
Run Code Online (Sandbox Code Playgroud)

当我尝试访问时

http://127.0.0.1:8000/static/polls/style.css
Run Code Online (Sandbox Code Playgroud)

我明白了

Page not found (404)
'polls/style.css' could not be found
Run Code Online (Sandbox Code Playgroud)

Sea*_*ean 9

我发现有必要在执行完步骤后重新启动正在运行的服务器

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

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

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


chr*_*man 5

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


Sur*_*rya 0

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

debug=true用于在您无需执行任何操作时提供静态文件。我不知道为什么它会让新手对如何设置感到困惑。下面的内容应该可以帮助您清楚地为生产和开发模式创建静态文件

开发模式:时DEBUG=True

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