我整天都没有工作。我在这里看到过至少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
答案 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
):
'/static/'
STATIC_ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), '../../static/').replace('\\','/'))
(BASE_DIR = os.path.dirname(os.path.dirname(__file__))
)STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"), '/Users/username/sites/containing_dir/project_dir/static/',)
(假定为OSX路径)+ 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
django-admin.py startproject mysite
manage.py createapp myapp
myapp
添加到INSTALLED_APPS
myapp
目录中,创建一个文件夹static
myapp/static
目录中,保存文件myfile.css
STATIC_ROOT
文件夹提供有效地址以存储静态文件。如果您要将收集的文件存储在os.path.join(os.path.abspath(os.path.dirname(__file__)), "mystatic")
,则可能类似于mysite/mysite/mystatic
。 manage.py collectstatic
;现在你必须看到你在上面提到的目录中收集的静态文件。如果它不存在,它也应该创建一个。您可以随意放置任何目录。http://127.0.0.1:8000/static/myfile.css