通过django视图上的字典更改图像

时间:2017-10-16 17:13:58

标签: python html django django-templates django-views

我正在django开发一个应用程序,并在几个国家/地区提供支持。在网站上应该根据它所在的子域显示国家标志,但我找不到通过django视图发送必要的标志图像的方法。

这是我的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)

我想在basetemplate.html中找到变量“countryflag”

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

这不起作用。我想将整个图像传递给countryflag键。有没有办法做到这一点,或者我必须在basetemplate.html中制作一个'if'?

3 个答案:

答案 0 :(得分:1)

您正在尝试更新&#34; dic&#34;没有在index()中初始化它。 如果您声明的三种情况都不为真,请添加else语句。

答案 1 :(得分:1)

请先创建一个dic然后再为模板,我认为这应该有效

{{ countryflag|safe }}

答案 2 :(得分:0)

这个答案假设了一些事情。

  1. 您在settings.py
  2. 中配置了STATIC_URL ='/ static /'
  3. django项目的目录结构是“理想的”
  4. 目录设置:

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

    然后您应该设置myapp结构:

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

    你的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>