Question

Désolé ma question est très basique, je souhaite afficher une image dans la page du modèle, je suis des heures de travail pour elle, l'image ne s'affiche pas. test.html, et créez un dossier nommé statique dans le dossier secondprjt latérale et créez des images de dossier et placez toutes les images nécessaires là
urls.py :

modèles d'url = modèles ('',
# Exemples:
# url(r'^$', 'SecondPrjt.views.home', nom='home'),
(r'^$','views.index'),
......... )

urlpatterns += staticfiles_urlpatterns()

vues.pydepuis django.shortcuts importer render_to_response
index def (demande):
retourner render_to_response('test.html')


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

paramètres.py


STATIC_ROOT = "C:/wamp/www/SecondPrjt/static"
STATIC_URL = '/statique/'
Staticfiles_dirs = ("c: / wamp / www / secondprjt / static",)
StaticFiles_Finders = ('django.contrib.staticfiles.finders.filesystemfinder', 'django.contrib.StaticFiles.Finders.AppDirectriesFinder',

)
INSTALLÉ_APPS = (
-----
'django.contrib.staticfiles',
---- )

Quelqu'un peut-il suggérer ce qui ne va pas chez moi.Notej'utilise les fenêtres et Django1.3 et en utilisant le serveur de développement. Merci d'avance
J'ai reçu ce qui suit après avoir demandé http://127.0.0.1:8000/ en mode navigation
c: wamp www secondprjt> python manage.py runserver valider des modèles ...

0 erreurs trouvées Django Version 1.3, en utilisant le serveur de développement de SecondPrJt.Settings de Paramètres http://127.0.0.1:8000/Quittez le serveur avec CTRL-BREAK.05 / SEP / 2011 15:18:24] "Get / http / 1.1" 200 89 [05 / Sep / 2011 15:18:24 "OBTENIR /images/img03.jpg HTTP/1.1" 404 2028

Était-ce utile?

La solution

Selon toute vraisemblance, votre problème est que vous avez utilisé des URL absolues à la fois dans le STATIC_ROOT et STATICFILES_DIRS.

Si vous souhaitez inclure des URL absolues dans chaque répertoire statique (cela ressemble à un hack, mais ce n'est pas grave, car vous ne devriez utiliser que staticfiles_urlpatterns() en développement), vous pouvez alors résoudre le problème en définissant simplement STATIC_ROOT = ''.

Modifier:On dirait que ce n'était pas votre seul bug.De plus, si vous jetez un œil à votre sortie de débogage, vous remarquerez quelque chose d'étrange à propos du 404 : il vient de /images/img03.jpg.Si vous vous en souvenez, vous avez essayé d'ajouter {{ STATIC_URL }} à cela, donc ça aurait dû être /static/images/img03.jpg.

En effet, lors de l'utilisation render_to_response, vous ne transmettez aucun contexte (le modèle n'a donc jamais accès à STATIC_URL -- il pense que c'est vide (d'où la raison pour laquelle vous n'avez pas vu le /static/ dans le cadre de l'URL de l'image.Chaque fois que vous souhaitez utiliser N'IMPORTE LEQUEL contexte, vous DOIT transmettez-le au modèle.Dans ce cas, vous devez utiliser [RequestContext].

Par conséquent, vous devez vous assurer d'avoir ajouté django.core.context_processors.static à TEMPLATE_CONTEXT_PROCESSORS dans paramètres.py.Tu devrais utiliser render_to_response comme suit:

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


Ce qui suit est une explication de ce que sont les processeurs de contexte:

Dans paramètres.py, vous auriez alors quelque chose comme :

 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 partie importante ici est que vous avez django.core.context_processors.static.Dans Django, un processeur de contexte est une fonction qui renvoie un dictionnaire de contexte.Par exemple, dans mes projets Django, j'utilise souvent l'extrait de code suivant :

constant_context_processor.py:

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

(Vous remarquerez cela ci-dessus dans paramètres.py, J'ai utilisé constant_context_processor.constants comme l'un des processeurs de contexte).Cela me permet de définir des constantes dans paramètres.py et de les utiliser dans mes modèles, par exemple comme quelque chose comme {{ CONSTANTS.favicon_url }}.

Comme vous pouvez le constater, l'avantage des processeurs de contexte et de l'utilisation RequestContext est-ce que le contexte dont vous avez généralement besoin dans vos modèles est automatiquement ajouté, vous n'avez donc pas besoin de remplir manuellement un dictionnaire de votre contexte dans chaque vue.Django sait qu'il y a certaines variables auxquelles vous souhaitez généralement accéder dans vos modèles, ils les rendent donc accessibles via leurs processeurs de contexte (ainsi, par exemple, django.core.context_processors.request vous donnera accès à une requête donnée, ses GET et POST paramètres et toutes sortes de métadonnées provenant d'un modèle, ce qui est souvent utile si, par exemple, vous faites varier le contenu en fonction des paramètres GET).

Dans votre cas, vous ne vouliez pas utiliser beaucoup de contexte, mais vous vouliez en utiliser un peu ({{ STATIC_URL }}), vous aviez donc besoin d'au moins django.core.context_processors.static.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top