14

Django のバージョンは 1.4 です。を読んでofficial document、自分の問題をググった。

最初に私は公式文書に従った静的ファイルの管理にこれを追加しましたsettings.py

TEMPLATE_CONTEXT_PROCESSORS = (
  'django.core.context_processors.debug',
  'django.core.context_processors.i18n',
  'django.core.context_processors.media',
  'django.core.context_processors.static',
  'django.contrib.auth.context_processors.auth',
  'django.contrib.messages.context_processors.messages',
)

私のテンプレートでは:

<link href="{{ STATIC_URL }}css/main.css" ...>

しかし、私のブラウザでは次のとおりです。

<link href="css/main.css" ...> (Just render `STATIC_URL` as empty)

私の設定は次のとおりです。

STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'

私の中でviews

def register(request):
    ...
    return render_to_response('register.html', {'errors':errors})
4

5 に答える 5

21

変化する

return render_to_response('register.html', 'errors':errors)

return render_to_response('register.html', {'errors': errors}, RequestContext(request))
于 2012-07-27T08:50:48.157 に答える
6

残念ながら、Django のrender_to_responseショートカットはデフォルトで通常のテンプレート コンテキストを使用します。これには、コンテキスト プロセッサや、STATIC_URL. を使用する必要がありますRequestContext。これは正確にそれを行います。

これは new を使用して呼び出すことができますrender(Django 1.3 以降で利用可能):

from django.shortcuts import render

return render(request, 'register.html', {'errors':errors})

Django 1.2 以前では、コンテキストを明示的に指定する必要があります。

from django.shortcuts import render_to_response
from django.template import RequestContext

return render_to_response('register.html', {'errors':errors},
    context_instance=RequestContext(request))
于 2012-07-27T08:57:37.837 に答える
6

Django 1.4 では、statictemplatetag 1を使用する必要があります。

試す:

{% load staticfiles %}
<link href="{% static "css/main.css" %} ...>
于 2012-07-27T13:06:53.707 に答える
2

これはreturnステートメントで必要ありませんか?:

context_instance=RequestContext(request)

于 2012-07-27T08:11:50.713 に答える
2

これはすでに回答済みですが、RequestContext を使用している場合でも STATIC_URL がまだ空としてレンダリングされる場合に備えて、別の回答を提供したいと思いました。

開発サーバーを実行している場合は、サーバーに静的ファイルを提供させるために、安全でないフラグを指定してサーバーを起動することを忘れないでください。

python manage.py runserver --insecure
于 2012-12-21T18:35:10.260 に答える