Domanda

scusate la mia domanda è molto semplice ,voglio visualizzare un'immagine nella pagina del modello,sono le ore di lavoro,L'immagine non viene visualizzata Ho creato un nuovo progetto SecondPrjt ,c'è solo una vista di una funzione denominata 'indice' e un modello denominato test.html e creare una cartella denominata statico nel lato SecondPrjt cartella e creare una cartella immagini e tutte le immagini necessarie c'
urls.py:

urlpatterns = (pattern",
# Esempi:
# url(r'^$', 'SecondPrjt.punti di vista.home', nome='home'),
(r'^$','viste.l'indice'),
......... )

urlpatterns += staticfiles_urlpatterns()

views.py da django.collegamenti importazione render_to_response
def indice(richiesta):
ritorno render_to_response('test.html')


test.html:
img src="{{ STATIC_URL }}images/img03.jpg" width="186" height="186"

settings.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',

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

Si può suggerire che cosa è sbagliato con me.NotaSto usando windows e django1.3 e l'utilizzo di server di sviluppo.Grazie in anticipo
Ho ottenuto il seguente dopo che l'ho richiesta http://127.0.0.1:8000/ in sfoglia
c:\wamp\www\SecondPrjt>python manage.py runserver La convalida di modelli...

0 errori trovati Django versione 1.3, usando le impostazioni 'SecondPrjt.impostazioni' Sviluppo server è in esecuzione http://127.0.0.1:8000/ Chiudere il server con CTRL-BREAK.[05/Set/2011 15:18:24] "GET / HTTP/1.1" 200 89 [05/Set/2011 15:18:24] "GET /images/img03.jpg HTTP/1.1" 404 2028

È stato utile?

Soluzione

Con ogni probabilità, il tuo problema è che hai usato un Url assoluto in entrambi i STATIC_ROOT e STATICFILES_DIRS.

Se si desidera includere gli Url assoluti per ogni statico dir (ci si sente come un hack, ma è bene, come si dovrebbe sempre e solo utilizzare staticfiles_urlpatterns() in fase di sviluppo), allora si può risolvere il problema semplicemente impostando STATIC_ROOT = ''.

Modifica:Sembra che non era il solo bug.Inoltre, se si prende uno sguardo al tuo output di debug, si noterà qualcosa di strano 404-è venuta da /images/img03.jpg.Se vi ricordate, si è tentato di aggiungere {{ STATIC_URL }} per che, quindi, dovrebbe essere /static/images/img03.jpg.

Questo è perché quando si utilizza render_to_response, è mai passare qualsiasi contesto (e quindi il modello non ha mai accesso a STATIC_URL -- si pensa che è vuota (quindi, perché non vedo l' /static/ come parte dell'URL dell'immagine.Ogni volta che si desidera utilizzare QUALSIASI il contesto, si DEVE passare al modello.In questo caso, si dovrebbe utilizzare [RequestContext].

Pertanto, è necessario assicurarsi di aver aggiunto django.core.context_processors.static per TEMPLATE_CONTEXT_PROCESSORS in settings.py.Si dovrebbe usare render_to_response come segue:

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


La seguente è una spiegazione di quello che contesto sono processori:

In settings.py, e allora sarebbe qualcosa di simile:

 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 più importante è che si hanno django.core.context_processors.static.In Django, un contesto processore è una funzione che restituisce un contesto dict.Per esempio, nei miei progetti Django, io uso spesso il seguente frammento di codice:

constant_context_processor.py:

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

(Si noti che in precedenza settings.py, Ho usato constant_context_processor.constants come uno dei il contesto di processori).Questo mi permette di definire le costanti in settings.py e il loro utilizzo nel mio template, per esempio, qualcosa di simile {{ CONSTANTS.favicon_url }}.

Come si può vedere, il vantaggio di contesto e l'utilizzo di processori RequestContext è che il contesto è in genere necessario nei template viene aggiunto automaticamente, così non dovrai compilare manualmente un dizionario il contesto in ogni vista.Django sa che ci sono alcune variabili di solito si desidera accedere al tuo template, in modo da rendere accessibile via il loro contesto di processori (quindi, per esempio, django.core.context_processors.richiesta vi darà accesso a una richiesta, la sua GET e POST parametri, e tutti i tipi di metadati da un modello, che è spesso utile se, per esempio, variare il contenuto basato su parametri GET).

Nel tuo caso, non volete usare molto il contesto, ma si ha voglia di usare un po' ({{ STATIC_URL }}), quindi hai bisogno almeno di django.core.context_processors.statico.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top