Django将变量传递到模板中

时间:2018-10-30 04:49:53

标签: html django django-templates django-views

您好,谢谢您的帮助,我的编程能力很差。

要指出的是:我正在做一个Django项目,该项目将数据从数据库传递到前端。但是现在我什至无法将Django的任何视图传递到模板中,我怀疑我传递了错误的变量类型。请对您的想法发表评论。

这是我在views.py上的代码:

from django.shortcuts import render

def index (requset):
    return render(requset,'myapp/index.html') # link to be able open frountend

def testdex(requset):
    text = "hello world"
    context ={'mytext' : text }
    return render(requset,'myapp/inculdes.html', context)

所以我的变量将被传递到incules并扩展到索引页

这是我在inculdes.html中的代码:

{% exntends "myapp/index.html" %}

{% block includes %}
{{ mytext }}
{% endblock includes %}

这是我在index.html上的代码:

<body>
{% block includes %} {% endblock includes %}    
</body>

再次感谢您拨出我的时间来帮助我,感谢您能为我写一些代码,因为请尝试整周解决此问题

4 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情

views.py

from django.template.response import TemplateResponse

def testdex(requset, template_name="myapp/inculdes.html"):
    args = {}
    text = "hello world"
    args['mytext'] = text
    return TemplateResponse(request, template_name, args)

inculdes.html

{% extends "myapp/index.html" %}
{% block includes %}
{{ mytext }}
{% endblock includes %}

并确保已在 settings.py

中设置了模板的路径

答案 1 :(得分:2)

我发现了为什么Django无法将变量传递给HTML的原因,因为;

我没有在视图中激活应用程序的功能

我为如此简单的错误感到尴尬。

我需要做的就是将此代码添加到我的应用程序网址中

urlpatterns = [
path('', views.timedex, name='timedex'), #need add this 
path('', views.index, name='index'),
]

答案 2 :(得分:1)

在{%endblock包含%}之前添加{{block.super}}

答案 3 :(得分:0)

执行{% block content %}{% endblock content %}时,您是在告诉Django您希望能够覆盖此部分。请注意,“内容”一词可以反映您要覆盖的内容。

当您执行{{ variable }}时,您是在告诉Django您想要传递上下文。在此示例中,我要传递的变量称为“标题”作为键,“投资组合”作为值。上下文是您在 views.py 中传递的字典,如下所示:

def portfolio_home(request):
    return render(request, 'portfolio/work.html', {'title': 'Portfolio'})

假设我要将上下文(或变量)传递到我的基本模板中。在此示例中,我想在基本模板的head部分的title标签中传递title。

base.html 的html文件中,您需要具有以下内容:

<!DOCTYPE html>
<html lang="en">

{% load staticfiles %}

    <head>
        <title>{{ title }}</title>
        ...........
    </head>
</html>

在我的项目和要向其中传递标题的其他应用程序的urls.py中,我应该创建如下视图:

def portfolio_home(request):
    return render(request, 'portfolio/work.html', {'title': 'Portfolio'})