1

すべて、私は Django1.4 を使用しています。img ファイル、js ファイルなどへのアクセスに関して質問があります。画像用のディレクトリ /opt/lab/labsite/media/img と /opt/lab/ にファイルがあります。 javascriptファイルのlabsite/media/js.以下のhtmlが機能するように設定ファイルの設定を変更する必要があります..コードを実行するためにdjangoサーバーを使用しています

私のコードは現在 /opt/lab/labsite/settings.py にあり、他のモジュールは /opt/lab/labsite/.......... にあります。

 <img src="/media/img/logo.jpg" alt="logo" /> 

以下はsettings.pyファイルの設定です

 # Absolute filesystem path to the directory that will hold user-uploaded files.
 # Example: "/home/media/media.lawrence.com/media/"
 MEDIA_ROOT = '/opt/lab/labsite/media/'

 # URL that handles the media served from MEDIA_ROOT. Make sure to use a
 # trailing slash.
 # Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
 MEDIA_URL = ''

 # Absolute path to the directory static files should be collected to.
 # Don't put anything in this directory yourself; store your static files
 # in apps' "static/" subdirectories and in STATICFILES_DIRS.
 # Example: "/home/media/media.lawrence.com/static/"
 STATIC_ROOT = ''

 # URL prefix for static files.
 # Example: "http://media.lawrence.com/static/"
 STATIC_URL = '/opt/lab/labsite/media/'

Changes

  MEDIA_ROOT = '/opt/lab/labsite/media/'

  MEDIA_URL = '/media/'

  STATIC_ROOT = '/opt/lab/labsite/static/'

  STATIC_URL = '/static/'

  STATICFILES_DIRS = (
  )

  # List of finder classes that know how to find static files in
  # various locations.
  STATICFILES_FINDERS = (
      'django.contrib.staticfiles.finders.FileSystemFinder',
      'django.contrib.staticfiles.finders.AppDirectoriesFinder',
  #    'django.contrib.staticfiles.finders.DefaultStorageFinder',
  )

  TEMPLATE_LOADERS = (
      'django.template.loaders.filesystem.Loader',
      'django.template.loaders.app_directories.Loader',
  #     'django.template.loaders.eggs.Loader',
  )

  MIDDLEWARE_CLASSES = (
      'django.middleware.common.CommonMiddleware',
      'django.contrib.sessions.middleware.SessionMiddleware',
      'django.middleware.csrf.CsrfViewMiddleware',
      'django.contrib.auth.middleware.AuthenticationMiddleware',
      'django.contrib.messages.middleware.MessageMiddleware',
  )

  ROOT_URLCONF = 'labsite.urls'

  # Python dotted path to the WSGI application used by Django's runserver.
  WSGI_APPLICATION = 'labssite.wsgi.application'

  TEMPLATE_DIRS = (
      # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
      # Always use forward slashes, even on Windows.
      # Don't forget to use absolute paths, not relative paths.
     '/opt/lab/labsite/templates'
  )

  INSTALLED_APPS = (
      'django.contrib.auth',
      'django.contrib.admin',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.sites',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'home',
      # Uncomment the next line to enable admin documentation:
      # 'django.contrib.admindocs',
  )

  # A sample logging configuration. The only tangible logging
  # performed by this configuration is to send an email to
  # the site admins on every HTTP 500 error when DEBUG=False.
  # See http://docs.djangoproject.com/en/dev/topics/logging for
  # more details on how to customize your logging configuration.

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

HTML:

 <img src="{{ STATIC_URL }}img/hi.png" alt="Hi!" />
 <img src="/static/img/hi.png" alt="Hi!" />
 <img src="/media/img/hi.png" alt="Hi!" />
 <img alt="Hi!" src="/opt/ilabs/ilabs_site/media/img/hi.png">
4

2 に答える 2

1

STATIC_URLあなたが設定したものは見栄えがよくありません。そうあるべきだと思いますSTATIC_ROOT

(たとえば) MEDIA_URL='/media/'andを設定する必要STATIC_URL='/static/'があります。また、urls.py で静的ファイルの提供も有効にしていることを願っています。

于 2012-07-15T07:41:32.417 に答える
1

これを settings.py で設定します。

STATIC_ROOT = '/opt/html/static/'
STATIC_URL = '/static/'

STATICFILES_DIRS = (
    '/opt/lab/labsite/static/',
)

これをコンテキスト プロセッサに追加します。

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

でこれを忘れないでくださいINSTALLED_APPS

  'django.contrib.staticfiles',

その後:

<img src="/static/img/logo.jpg" alt="logo" /> 

また

<img src="{{ STATIC_URL}}img/logo.jpg" alt="logo" /> 

logo.jpgにある場合/opt/lab/labsite/static/img/

さらに、STATIC_ROOTApache、Nginx などの Web サーバー/リバース プロキシによって提供される静的フォルダーとして機能します。

python manage.py collectstatic

これにより、すべてのファイルが/opt/lab/labsite/static/からSTATIC_ROOT-にコピーされます/opt/html/static/。これは、展開に役立ちます。

しかし、これはすべて開発のためです。本番環境では、静的コンテンツを提供するより良い方法があります - https://docs.djangoproject.com/en/dev/howto/static-files/#staticfiles-production

于 2012-07-15T07:59:58.940 に答える