Pregunta

Lo siento, mi pregunta es muy básica, quiero mostrar una imagen en la página de plantilla, estoy trabajando horas para ello, la imagen no muestra. test.html, y cree una carpeta llamada static en la carpeta SECTRJT del lado y cree imágenes de carpeta en ella y coloque todas las imágenes necesarias allí
urls.py:

urlpatterns = patrones ('',
# Ejemplos:
# url (r '^$', 'Secondprjt.views.home', name = 'Home'),
(r '^$', 'Views.index'),
......... )

urlpatterns += staticfiles_urlpatterns ()

vistas.de django.shortcuts import render_to_esponse
Índice de def (solicitud):
return render_to_esponse ('test.html')


test.html:
img src = "{{static_url}} imágenes/img03.jpg" width = "186" altura = "186"

settings.py


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

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

¿Alguien puede sugerir qué me pasa?Notaestoy usando Windows y django1.3 y usando el servidor de desarrollo. Gracias por adelantado
Tengo lo siguiente después de solicitar http://127.0.0.1:8000/ en la navegación
c: wamp www segundoprjt> python manage.py runserver Modelos de validación ...

0 errores encontrados Django versión 1.3, utilizando el servidor de desarrollo de SecondPrjt.Settings de Settings se ejecuta en http://127.0.0.1:8000/Renuncia al servidor con 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

¿Fue útil?

Solución

Con toda probabilidad, su problema es que ha usado URL absolutas en ambas STATIC_ROOT y STATICFILES_DIRS.

Si desea incluir URL absolutas en cada director estático (se siente como un truco, pero está bien, como solo debe usar staticfiles_urlpatterns() en desarrollo), entonces puede solucionar el problema simplemente configurando STATIC_ROOT = ''.

Editar: Parece que ese no fue tu único error. Además, si echa un vistazo a su salida de depuración, notará algo extraño sobre el 404, proviene de /images/img03.jpg. Si recuerdas, intentaste agregar {{ STATIC_URL }} a eso, entonces debería haber sido /static/images/img03.jpg.

Esto se debe a que cuando se usa render_to_response, nunca pasa ningún contexto (por lo que la plantilla nunca tiene acceso a STATIC_URL - piensa que está en blanco (de ahí por qué no viste el /static/ Como parte de la imagen de la imagen. Siempre que quieras usar NINGÚN contexto, tu DEBER pasarlo a la plantilla. En este caso, debe usar [RequestContext].

Por lo tanto, debe asegurarse de haber agregado django.core.context_processors.static a TEMPLATE_CONTEXT_PROCESSORS en settings.py. Deberías usar render_to_response como sigue:

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


La siguiente es una explicación de qué procesadores de contexto son:

En settings.py, entonces tendrías algo como:

 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', )

La parte importante aquí es que tienes django.core.context_processors.static. En Django, un procesador de contexto es una función que devuelve un DICT de contexto. Por ejemplo, en mis proyectos de Django, a menudo uso el siguiente fragmento de código:

constant_context_processor.py:

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

(Lo notará arriba en settings.py, Solía constant_context_processor.constants como uno de los procesadores de contexto). Esto me permite definir constantes en settings.py y usarlos en mis plantillas, por ejemplo como algo como {{ CONSTANTS.favicon_url }}.

Como puede ver, la ventaja de los procesadores de contexto y el uso RequestContext Es ese contexto que generalmente necesita en sus plantillas se agrega automáticamente, por lo que no tiene que poblar manualmente un diccionario de su contexto en cada punto de vista. Django sabe que hay ciertas variables a las que generalmente desea acceder en sus plantillas, por lo que las hacen accesibles a través de sus procesadores de contexto (por ejemplo, por ejemplo, django.core.context_processors.Request le dará acceso a una solicitud determinada, su obtención y publicación Parámetros y todo tipo de metadatos de una plantilla, que a menudo es útil si, por ejemplo, varía el contenido en función de los parámetros GET).

En su caso, no quería usar mucho contexto, pero sí quería usar un poco ({{ STATIC_URL }}), por lo que necesitabas al menos django.core.context_processors.static.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top