Вопрос

Извините, мой вопрос очень прост, я хочу отобразить изображение на странице шаблона, я работаю для его рабочего времени, изображение не отображается, я создаю новый проект SecondPrjt, есть только одна функция представления с именем «Индекс» и один шаблон с именем test.html, и создайте папку с именем static в папке Secondprjt и создайте в ней изображения папок и поместите все необходимые изображения
urls.py:

urlpatterns = patters ('',
# Примеры:
# url (r '^$', 'secondprjt.views.home', name = 'home'),
(r '^$', 'views.index'),
......... )

urlpatterns += staticfiles_urlpatterns ()

views.pyот django.shortcuts import render_to_response
def Index (запрос):
return render_to_response ('test.html')


test.html:
img src = "{{static_url}} images/img03.jpg" ширина = "186" высота = "186"

настройки.py


Static_root = "c:/wamp/www/secondprjt/static"
Static_url = '/static/'
Staticfiles_dirs = ("c:/wamp/www/secondprjt/static",)
Staticfiles_finders = ('django.contrib.staticfiles.finders.filesystemfinder', 'django.contrib.staticfiles.finders.appdirectoriesfinder',

)
Insted_apps = (
-----
'django.contrib.staticfiles',
---- )

Может ли кто -нибудь предложить, что со мной не так.ПримечаниеЯ использую окна а также Django1.3 и использование сервера разработки. спасибо заранее
Я получил следующее после того, как я запрошу http://127.0.0.1:8000/ в просмотре
c: wamp www secondprjt> python Manage.py Runserver Validating Models ...

0 Ошибки обнаружили, что Django версия 1.3, используя настройки SecondPrjt.settings 'Server разработки работает в http://127.0.0.1:8000/Выйдите из сервера с помощью CTRL-Break. [05/Sep/2011 15:18:24] «Get/http/1.1» 200 89 [05/Sep/2011 15:18:24 "GET/IMAGES/IMG03.JPG http/1.1" 404 2028

Это было полезно?

Решение

По всей вероятности, ваша проблема в том, что вы использовали абсолютные URL -адреса в обоих STATIC_ROOT а также STATICFILES_DIRS.

Если вы хотите включить абсолютные URL -адреса в каждый статический DIR (это похоже на взломать, но это нормально, так как вы должны только когда -либо использовать staticfiles_urlpatterns() в разработке), тогда вы можете решить проблему, просто настроив STATIC_ROOT = ''.

Редактировать: Похоже, это не была ваша единственная ошибка. Кроме того, если вы посмотрите на вывод отладки, вы заметите что -то странное в 404 - это исходит от /images/img03.jpg. Анкет Если помните, вы попытались добавить {{ STATIC_URL }} к этому, так что это должно было быть /static/images/img03.jpg.

Это потому, что при использовании render_to_response, вы никогда не передаете никакого контекста (так что шаблон никогда не имеет доступа к STATIC_URL - он думает, что это пусто (поэтому вы не видели /static/ как часть изображения URL. Всякий раз, когда вы хотите использовать ЛЮБЫЕ контекст, вы ДОЛЖЕН Передайте его в шаблон. В этом случае вы должны использовать [RequestContext].

Поэтому вы должны убедиться, что добавили django.core.context_processors.static к TEMPLATE_CONTEXT_PROCESSORS в настройки.py. Анкет Вы должны использовать render_to_response следующим образом:

def index(request):
    return render_to_response('test.html', context_instance=RequestContext(request))


Ниже приведено объяснение того, какие процессоры контекста являются:

В настройки.py, тогда у вас будет что -то вроде:

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

Важной частью здесь является то, что у вас есть django.core.context_processors.static. Анкет В Django процессор контекста - это функция, которая возвращает контекст. Например, в моих проектах Django я часто использую следующий фрагмент кода:

constant_context_processor.py:

import settings
def constants(request):
    return {
           'CONSTANTS': settings.CONSTANTS,
    }

(Вы заметите, что выше в настройки.py, Я использовал constant_context_processor.constants как один из процессоров контекста). Это позволяет мне определять константы в настройки.py и использовать их в моих шаблонах, например, как что -то вроде {{ CONSTANTS.favicon_url }}.

Как видите, преимущество в процессе контекста и использования RequestContext Это контекст, который вам обычно нуждается в ваших шаблонах, добавляется автоматически, поэтому вам не нужно вручную заполнять словарь вашего контекста в каждом представлении. Джанго знает, что есть определенные переменные, к которым вы обычно хотите получить доступ в своих шаблонах, поэтому они делают их доступными через свои контекстные процессоры (так, например, django.core.context_processors.request предоставит вам доступ к данному запросу, его Get and Post Post Параметры и все виды метаданных из шаблона, что часто полезно, если, скажем, вы варьируете содержание на основе параметров GET).

В вашем случае вы не хотели использовать много контекста, но вы хотели немного использовать ({{ STATIC_URL }}), поэтому вам нужно по крайней мере django.core.context_processors.static.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top