django {{ STATIC_URL }} 有时不起作用

标签 django configuration django-staticfiles

一个可怜的 Django 初学者在访问某些 View 上的静态文件(css、js)时遇到了阻塞问题。主要是,在主页上,这些静态文件是完全可以访问的,但在不同的页面上,则不能,并且布局完全损坏。

这是我的settings.py:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'bands',
    'lyrics',
    'articles',
)
PROJECT_DIR = os.path.dirname(__file__)
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(PROJECT_DIR, "static"),
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

这是我的 View 扩展的基本通用模板的一部分:
<link rel="Shortcut icon" href="{{ STATIC_URL }}img/favicon32.png" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/bootstrap.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}js/sortable.js"></script>

渲染时,它返回这样的代码(这就是我想要的):
<link rel="Shortcut icon" href="/static/img/favicon32.png" />
<link rel="stylesheet" type="text/css" href="/static/css/bootstrap.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
<script type="text/javascript" src="/static/js/sortable.js"></script>

这是主页 View 的代码(静态文件工作的代码):
def slider(request):
    context = Context ({ 'articles': Article.objects.order_by('-created_at')[:5] })
    return render(request, 'articles/slider.html', context)

这是不访问静态文件的 View (它使用在 django 文档中找到的分页示例):
def archive(request, page="1"):
    articles_list = Article.objects.all().filter(active=True)
    paginator = Paginator(articles_list, 6)
    try:
        articles = paginator.page(page)
    except PageNotAnInteger:
        articles = paginator.page(1)
    except EmptyPage:
        articles = paginator.page(paginator.num_pages)
    context = Context({
        'articles': articles
    })
    return render_to_response('articles/archive.html', context)

如果有人猜测可能出了什么问题,请告诉我。

当前项目的代码可作为 github repo .

最佳答案

您必须使用 RequestContext :

from django.template import RequestContext

def archive(request, page="1"):
    # ...
    return render_to_response('articles/archive.html',
                              context,
                              context_instance=RequestContext(request))

或使用 render 快捷方式,就像 render_to_response ,但使用 RequestContext :
from django.shortcuts import render

def archive(request, page="1"):
    # ...
    return render('articles/archive.html', context)

请注意您使用了 render在您的 slider看法。

关于django {{ STATIC_URL }} 有时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494421/

相关文章:

django - 如何使用子查询 django ORM?

python - 我有一个分配给 django 模型 charfield 的长整数列表。 long 列表转换为 unicode 列表

python - Django CONN_MAX_AGE 失败与 postgresql max_connections

python - 在 Django 中找不到静态文件错误

django - 在单独的服务器上提供静态文件

django - 如何在表单验证错误 Django 上预填充图像字段?

hibernate - MissingPropertyException:没有此类属性:类的生成器:org.grails.orm.hibernate.cfg.HibernateMappingBuilder

java - 启用 webmvc 时,基于 Spring Java 的配置和 JUnit 不起作用

java - 如何在Atmosphere框架中配置自定义AtmosphereResource

python - Django:加入的路径位于基本路径组件之外