gpt4 book ai didi

python - Django多模板渲染

转载 作者:行者123 更新时间:2023-12-01 02:23:39 24 4
gpt4 key购买 nike

目前,我正在开发一个非常复杂的页面,当用户选择页面上显示的菜谱时,需要更新该页面。选择菜谱后,需要更新菜谱的价格和名称显示在页面上。

我的想法是渲染多个扩展/包含模板,每个模板负责自己的网页部分。但是,我面临一些问题:

  1. 我需要多个 View 函数来处理所有模板的数据。
  2. 我需要将请求传递给多个 View 函数,以便它们返回包含正确数据的模板
  3. 其中一个函数不仅接受请求,还接受模型对象的 slug 来更新页面上的数据。

问题:

  1. 如何从不同的 View 函数相互发送响应/数据?
  2. 如何将请求传递给多个函数?
  3. 扩展的渲染是否也确保了 base.html 的渲染?
  4. 使用扩展是正确的还是应该使用包含?

到目前为止我想到了这个系统:

base.html

<body>
{% block extend1 %}
{% endblock %}

{% block extend2 %}
{% endblock %}

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

extend1.html(3 个扩展的示例)

{% extends base.html %}

{% block extend1 %}
#html code
{% endblock

View .py

def extend1(request):
#do something
template = 'extend1.html'
context = a, b, c
return render(template.render(context))

def extend2(request):
#do something
template = 'extend2.html'
context = d, e, f
return render(template.render(context))

def extend3(request, slug):
#do something
template = 'extend3.html'
context = g, h, i
return render(template.render(context))

最佳答案

您对 Django 模板语言的工作方式存在误解 - 默认情况下,Django 接受 Request,将其转发(通过 urls.py 中的 url)到 View ,它可以从请求中获取数据,并呈现一个模板 - 其结果是来自您的 template.html 的 HTML页面插入了您传递给渲染的上下文信息,作为浏览器的响应,浏览器将 HTML 显示为页面。

模板渲染发生在服务器端 - 一旦它作为响应返回,Django 模板就不再能够控制客户端显示的内容。 Django 模板语言用于确定将呈现给 Response 的内容,但在 Template 呈现之后,它不再存在于页面上,并且不能用于修改客户端显示的内容。为此,您需要 JavaScript。

Javascript 及其各种排列是人们用来为网页提供客户端交互性的方法。在您的示例中,当用户选择菜谱时,Javascript 事件将触发,并且可以将 AJAX 回调发送回您的服务器,该服务器将获取具体的食谱信息。

我建议对 API 进行一些更高级的阅读(Django Rest Framework 是一个很好的起点,它有深入的教程)并进行 API 调用。并可能调查 Single Page Apps (SPAs) and Django教程,因为这听起来像是您想要实现的目标。

关于python - Django多模板渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47671389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com