4

哀れな django 初心者が、一部のビューで静的ファイル (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',
)

これは、ビューが拡張する基本的な汎用テンプレートの一部です。

<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>

これは、ホームページ ビュー (静的ファイルが機能するもの) のコードです。

def slider(request):
    context = Context ({ 'articles': Article.objects.order_by('-created_at')[:5] })
    return render(request, 'articles/slider.html', context)

これは静的ファイルにアクセスしないビューです (django docs にあるページネーションの例を使用しています):

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として入手できます。

4

2 に答える 2

7

以下を使用する必要があります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

于 2013-03-19T08:20:31.417 に答える
0

[1] 静的ディレクトリがある INSTALLED_APPS にディレクトリ名を追加します。

[2] html テンプレートに static をロードする

[1] 例 [TestAPP に static があります] [このリンクをチェックしてください] : https://i.stack.imgur.com/zHEck.png

[2] [次のように HTML テンプレートに静的ファイルをロード] : https://i.stack.imgur.com/vPkFb.png

于 2020-12-22T02:11:50.910 に答える