我知道有一百万人问过这个问题,而且我已经阅读并阅读但仍然无法让这个工作(我认为这说明文件咳嗽了一些)。
ONE。 CSS: 以下是我的设置:
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'))
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static")
STATIC_ROOT = '/static/'
STATIC_URL = '/static/'
也相关:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'south',
'blog',
)
我的模板服务很好,而我的css不是。它位于static / originaltheme.css
我试过了两个:
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}originaltheme.css">
和
<link rel="stylesheet" type="text/css" href="/static/originaltheme.css">
TWO。此外,有没有办法让硬编码的网址显示?例如,假设博客文章的内容有一个硬编码的网址/static/img1.jpg,我该怎么办?所有文档都指向{{static_url}},但我猜测从数据库的文本字段返回时不会被评估...
与我的网址有什么关系吗?
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf.urls.static import static
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'nickswebsite.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^$', 'blog.views.index'),
url(r'^blog/view/(?P<slug>[^\.]+)',
'blog.views.view_post',
name='view_blog_post'),
url(r'^blog/category/(?P<slug>[^\.]+)',
'blog.views.view_category',
name='view_blog_category'),
url(r'^admin/', include(admin.site.urls)),
)
编辑:
我试过这样做是在网址:
urlpatterns = patterns('',
url(r'^$', 'blog.views.index'),
url(r'^blog/view/(?P<slug>[^\.]+)',
'blog.views.view_post',
name='view_blog_post'),
url(r'^blog/category/(?P<slug>[^\.]+)',
'blog.views.view_category',
name='view_blog_category'),
url(r'^admin/', include(admin.site.urls)),
) + static(settings.STATIC_URL, document_root=setting.STATIC_ROOT)
urlpatterns += staticfiles_urlpatterns()
但我正在设置&#34;设置&#34;未定义的错误。我尝试导入设置,但仍然出现错误。
好的,服务静态开发服务器的文档是可怕的。无论谁写它都应该重写它。这个人是全世界唯一一个似乎清楚地解释清楚的人:http://agiliq.com/blog/2013/03/serving-static-files-in-django/#servee
你在settings.py中需要这些(为什么它们不包括在最初的安装中......天才......):
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
你不需要这些: STATICFILES_DIRS =(os.path.join(BASE_DIR,&#34; static&#34;) STATIC_ROOT =&#39; / static /&#39;
你不需要:
manage.py collectstatic
http://agiliq.com/blog/2013/03/serving-static-files-in-django/#servee:
需要注意的要点
我们没有对Django向我们提供的任何静态设置进行任何更改。我们将静态设置保留为Django提供的默认settings.py。
您不需要对urls.py进行任何更改即可在开发中提供静态文件。您不需要添加staticfiles_urlpatterns()。很多次,我对此感到困惑。
您不需要python manage.py collectstatic来在开发中提供静态文件。
答案 0 :(得分:3)
我也反对这个特殊问题。最后提出了this blog post
实际上您不需要collectstatic
,STATICFILES_FINDER
和django.contrib.staticfiles
。他们都是相关的。阅读blog post
答案 1 :(得分:1)
我将这些行添加到my url.py的底部:
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^uploads/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
答案 2 :(得分:0)
您使用过:
./manage.py collectstatic
此外,您的STATIC_ROOT应该是目录静态文件的绝对路径:
STATIC_ROOT = os.path.normpath(os.path.join(BASE_DIR, "static"))
答案 3 :(得分:0)
这是我使用上述答案为Django 2.0所做的。因此,您需要一个易于部署的系统。
<强> settings.py:强>
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Serve Static in Development
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATICFILES_DIRS = [os.path.join(BASE_DIR, "appName/static/appName")]
# Serve static in production
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
然后创建一个目录〜/ documentRoot / appName / static / appName /并将我的png复制到其中。然后在我的模板中:
<head>
<bootstrap,jquery,etc...>
{% load staticfiles %}
</head>
<body>
<img class="mb-4" src="{% static "myImage.png" %}" alt="" width="72" height="72">
</body>
然后,当您想要部署时,只需运行collectstatic,它们将在一个地方提供服务。每次添加应用程序时,都要添加到静态目录列表中。