我在理解 Django 中的继承方面遇到了一些麻烦。这是我的问题的抽象测试用例。 (请注意,我的应用程序名为 viz
,我刚刚在其下构建了此测试用例)
urls.py
from django.urls import path
from viz import views
urlpatterns = [
path('test.html', views.test_view, {}, name='test'),
path('inherit_from_test.html', views.inherit_from_test_view, {}, name='inherit_test')
]
viz/views.py
def test_view(request):
return render(request, "viz/test.html", context={'hello': 'hello'})
def inherit_from_test_view(request):
return render(request, "viz/inherit_from_test.html", context={'django': 'django' })
viz/static/viz/test.html
<body>
<h1>
{{ hello }}
</h1>
<h2>
{% block content %}
{% endblock %}
</h2>
</body>
</html>
viz/static/viz/inherit_from_test.html
{% extends "viz/test.html" %}
{% block content %}
{{ django }}
{% endblock %}
正如预期的那样,test.html
文件有一个 h1
标记,表示 hello
。不过,我希望在 inherit_from_test.html
中看到 h1
和 h2
标记。相反,inherit_from_test.html
文件仅包含 h2
标记,表示 Django
。
为什么inherit_from_test.html
没有继承{{ hello }}
变量的内容?
如何使 {{ hello }}
的内容在继承的模板中可用?
最佳答案
模板继承;观点没有。只有您的 test_view
才会将 hello
变量发送到上下文。当您调用 inherit_from_test_view
时,它不存在。
关于python - 如何继承Django变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51898527/