2017-10-16 5 views
0

Je développe une application en django avec un support dans plusieurs pays. Sur le site devrait apparaître le drapeau du pays en fonction du sous-domaine dans lequel il se trouve, mais je ne peux pas trouver un moyen d'envoyer l'image de drapeau nécessaire à travers une vue django.Modifier l'image dans un dictionnaire sur une vue django

Ceci est un exemple de mon views.py

def index(request): 
    subdomain = request.META['HTTP_HOST'].split('.')[0] 
    if subdomain == 'www': 
     dic.update({"countryflag": ''}) 
    elif subdomain == 'mx': 
     dic.update({"countryflag": '<img src="{% static "images/mxflag.png" %}" alt="img">'}) 
    elif subdomain == 'nz': 
     dic.update({"countryflag": '<img src="{% static "images/nzflag.png" %}" alt="img">'}) 
    return render(request, 'mysite/index.html', dic) 

Je veux recive la variable "countryflag" dans mon basetemplate.html

<div id="cp_side-menu-btn" class="cp_side-menu"> 
    {{ countryflag }} 
</div> 

Cela ne fonctionne. Je veux passer l'image entière à la touche de drapeau national. Y at-il un moyen de le faire ou je dois faire un 'si' dans le basetemplate.html?

+0

Quelle est la sortie de ce code? –

Répondre

1

Vous essayez de mettre à jour "dic" sans l'initialiser dans index(). Ajoutez également une instruction else si aucune des trois situations que vous avez déclarées n'est vraie.

1

S'il vous plaît d'abord créer un dic puis pour le modèle, je suppose que cela devrait fonctionner

{{ countryflag|safe }} 
0

Cette réponse prend quelques choses.

  1. Vous avez votre STATIC_URL = '/ statique /' configuré dans settings.py
  2. structure des répertoires pour le projet django est 'idéal'

Configuration du répertoire:

djangoproject 
--djangoproject 
----__init__.py 
----settings.py 
----urls.py 
----wsgi.py 
--myapp 
----migrations 
------__init__.py 
----admin.py 
----apps.py 
----models.py 
----tests.py 
----views.py 
--static 
----css 
------main.cs 
----js 
------main.js 
--manage.py 

djangoproject/djangoproejct/urls.py:

from django.conf.urls import url, include # Add include to the imports here 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('myapp.urls')) 
] 

djangoproject/myapp/urls.py

from django.conf.urls import url 
from myapp import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
] 

Vous devez ensuite configurer votre structure monapp en tant que telle:

--myapp 
----migrations 
------__init__.py 
----templates 
------index.html 
----admin.py 
----apps.py 
----models.py 
----tests.py 
----urls.py 
----views.py 

Votre views.py

def index(self, request, **kwargs): 
     subdomain = request.META['HTTP_HOST'].split('.')[0] 
     if subdomain == 'www': 
      context = {'data' : [ {'countryflag': ''}]} 
     elif subdomain == 'mx': 
      context = { 'data' : [ { 'countryflag' : '<img src="{% static "images/mxflag.png" %}" alt="img">'}] } 
     elif subdomain == 'nz': 
      context = { 'data' : [ { 'countryflag' : '<img src="{% static "images/nzflag.png" %}" alt="img">'}] } 
     else: 
      context = {'data' : [ {'countryflag': ''}]} 
     return render(request, 'index.html', context) 

index.html

<div id="cp_side-menu-btn" class="cp_side-menu"> 
    {% for i in data %} 
    {{i.countryflag}} 
    {% endfor %} 

</div> 
+0

Cette approche a été modifiée pour votre cas d'utilisation de [ce tutoriel] (https://scotch.io/tutorials/working-with-django-templates-static-files) par Amos Omondi à partir de 2016. – noes1s