【问题标题】:Django Template Language Not RenderingDjango模板语言不呈现
【发布时间】:2019-08-01 03:16:35
【问题描述】:

我是 Django 的新手,并按照教程进行操作。我希望这只是一个明显的错误,但我无法让我的网络浏览器呈现用 Django 模板语言编写的任何内容,我不知道为什么。

这是我在某些上下文中的目录结构:https://imgur.com/dGNIiDa

project/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('budget/', include('budget.urls')),
    path('admin/', admin.site.urls)
]

预算/urls.py:

from django.urls import path

from . import views

urlpatterns = [
    path('<int:account_id>/', views.get_account, name='detail'),
]

预算/views.py:

from django.shortcuts import render
from django.http import HttpResponse
from budget.models import Account, Transaction

def get_account(request, account_id):
    accts = Account.objects.filter(pk=account_id)

    context = {"test": accts}

    return render(request, 'budget/detail.html', context)

预算/模板/预算/detail.html:

<p>This is a {{ context.test }}</p>

当我在浏览器中访问 localhost:8000/budget/1 时,会呈现以下内容:https://imgur.com/j2Vh0yb

很明显 Django 正在查找模板文件并将其发送到浏览器,但在 {} 中写入的任何内容都不会被识别或呈现。我已经完全按照教程进行操作,但我不知道为什么它不起作用。有什么想法吗?

【问题讨论】:

  • 在您的模板中应该是&lt;p&gt;This is a {{ test }}&lt;/p&gt;。名称 context 在您的模板中未定义。它只是您视图中字典的变量名。
  • 你试过只&lt;p&gt;This is a {{ test }}&lt;/p&gt;,没有context吗?

标签: python django


【解决方案1】:

模板中的表达式中不需要context;您在上下文中放置的所有内容都是模板中的“全局变量”,因此请尝试

<p>This is a {{ test }}</p>

改为。

Django 的模板引擎具有对不存在的属性保持沉默的不幸特性,因此很难调试这样的东西。

【讨论】:

  • 谢谢你这样做!我没有意识到 context 提供的变量是全局变量——当我尝试编写更复杂的模板时,这让我很失望。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-05
  • 2012-11-29
  • 2021-08-17
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多