0

django で css ファイルを使用する方法を探しています。私は多くのことを試し、多くのフォーラムで検索しましたが、間違いを見つけることができません. これは私のコードです:

ディレクトリ構造:

/projecte
    manage.py
    /projecte
         settings.py
         url.py
         wsgi.py
         /static
             /css
                  estil.css
         /templates
             inici.html

    /principal
         models.py
         views.py
         forms.py

URL.py

from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
urlpatterns = patterns('',
    url(r'^$','principal.views.inici'),
    ...
)
urlpatterns += staticfiles_urlpatterns()

設定.py

RUTA_PROJECTE = os.path.dirname(os.path.realpath(__file__))
STATIC_ROOT = os.path.join(RUTA_PROJECTE,'static')
STATIC_URL = '/static/'

STATICFILES_DIRS = (   
os.path.join(RUTA_PROJECTE,'static'),
)

TEMPLATE_CONTEXT_PROCESSORS = ( 
    ...
'django.core.context_processors.static',    
)

INSTALLED_APPS = (    
    'django.contrib.staticfiles',   
    ...
'principal',  
) 

VIEWS.py

def inici(request):
tracks = Track.objects.all()
#print(len(tracks))

return render_to_response('inici.html',
    {'tracks':tracks},
    context_instance = RequestContext(request))

INICI.html

<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/estil.css">

スタイルに入るとうまくいきません。エラーはありませんが、何も起こりません。助けてくれてありがとう

4

2 に答える 2

1

私の意見では、静的テンプレート タグを使用するようにしてください。あなたのhtmlの一番上にこれを追加してください:

{% load staticfiles %}

css へのリンクは次のようになります。

<link rel="stylesheet" type="text/css" href="{% static "css/estil.css" %}" />
于 2012-12-17T16:51:57.697 に答える
1

load staticfiles も同じだと思います。

問題は、それを .py ファイルに入れていることですか? テンプレートにあるはずです。(またはそれはタイプミスのようです)

なるほど、テンプレートへのパスを見逃しています。

return render_to_response('inici.html'

次のようにする必要があります。

return render_to_response('/principal/inici.html'

プリンシパル ディレクトリにパス テンプレートを作成する

また、プリンシパルと呼ばれるテンプレートのサブパス:

principal/templates/principal

テンプレート(.html)をそこに置きます

/projecte
    manage.py
    /projecte
         settings.py
         url.py
         wsgi.py
         /templates (dir for your project templates)
               /projecte
               /admin (e.g. if you want to override your admin templates, do it here)
    /var ( a dir used operationaly for all variable things... logs, files, db)
       /static
          /css
                 estil.css
       /media
       /logs
       /sqlite (for testing only, unless you use sqlite operational as well)
    /principal
         models.py
         views.py
         forms.py
         /templates (a dir for your application templates)
                   /principal
                             inici.html
         /media

そして、彼がテンプレートを見つけたことを確認してください... 1 秒:

settings.py で使用:

import os

SETTINGS_DIR = os.path.dirname(os.path.realpath(__file__))
BUILDOUT_DIR = os.path.abspath(os.path.join(SETTINGS_DIR, '..'))
STATIC_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'static')
STATIC_URL = '/static_media/'
MEDIA_ROOT = os.path.join(BUILDOUT_DIR, 'var', 'media')
MEDIA_URL = '/media/'

TEMPLATE_DIRS = (
    os.path.join(SETTINGS_DIR, "templates"),
)
TEMPLATE_CONTEXT_PROCESSORS = (
 .....
    # Extra for django-staticfiles.
    'staticfiles.context_processors.static_url'
......
)

INSTALLED_APPS (
.....
    'django.contrib.staticfiles',   
    'yourProjectName',
    'yourAppName',    
    'staticfiles',
.....

remplate (.html) ファイルに次のようなものを入れます。

<link rel="stylesheet"
      href="{{ STATIC_URL }}iamapps/iamapps.css"
      type="text/css"
      media="screen, projection" />

ちなみに、テンプレートディレクトリを置く場所は依存しています....アプリに属している場合はアプリパスに(プリンシパルが推測します)、サイト全体に使用されている場合はサイトディレクトリに(projecte)

そしてあなたのビュー.pyには、それを行う2つの方法があります.古典的な方法です:(例)

def home(request, template='principal/home.html'):

    logger.debug("Home view called by user %s" % request.user)
    return render_to_response(template,{},context_instance=RequestContext(request))

またはクラスベースのビュー:

class HomeView(TemplateView):
    template_name = "principal/home.html"

本当にうまくやりたい場合は、アプリ テンプレート ディレクトリにベース テンプレートを作成し、これを inici.html で使用して拡張します。

{% extends 'prinicpal/base.html' %}

ここで完全なチュートリアルを書く前に...それはすべて、何を定義し、どこに置くかによって異なります。あなたの質問には、コードのエラーがどこにあるかを正確に指摘するためのすべての情報が含まれているわけではありません。

編集 あなたの情報を追加して、私はあなたのプロジェクトを再構築し、この設定で私のために働きます:あなたが質問で与えたのと同じプロジェクト構造で。

import os

RUTA_PROJECTE = os.path.dirname(os.path.realpath(__file__))
STATIC_ROOT = os.path.join(RUTA_PROJECTE,'static')
STATIC_URL = '/static/'
BUILDOUT_DIR = os.path.abspath(os.path.join(RUTA_PROJECTE, '..'))
DEBUG = False


TEMPLATE_DIRS = (
    os.path.join(RUTA_PROJECTE, "templates"),
)


TEMPLATE_CONTEXT_PROCESSORS = ( 
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    # Extra for django-staticfiles.
    'staticfiles.context_processors.static_url',

)


INSTALLED_APPS = (    
    'django.contrib.staticfiles',   
    'principal',
    'projecte',    
    'staticfiles',
) 

ROOT_URLCONF = 'projecte.urls'

編集(31-12-2012)

プロジェクトの URL を追加することを忘れないでください。

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'', include('staticfiles.urls')),
    )
于 2012-12-17T17:21:34.827 に答える