Django 2.0:将数据从视图发送到包含在另一个模板中的模板(2 个不同的应用程序)

Posted

技术标签:

【中文标题】Django 2.0:将数据从视图发送到包含在另一个模板中的模板(2 个不同的应用程序)【英文标题】:Django 2.0: Send data from a view to a template that is included in another template (2 different Apps) 【发布时间】:2018-09-24 22:09:38 【问题描述】:

我正在开发一个 Django 项目,该项目有两个应用程序,homecontact

我想将上下文字典从联系人视图发送到 contact_form.html 模板,该模板包含在 home.html 模板中。

我不知道如何将值传递给contact_form.html 模板,因为没有contact\views.py 的url。

主页\urls.py:

from django.urls import path

from . import views

app_name = 'home'

urlpatterns = [
    path('', views.home, name='home'),
]

home\views.py:

from django.shortcuts import render

def home(request):
    return render(request, "home/home.html", )

模板\home\home.html:

% extends "base.html" %

% block content %
    <h1>Home template</h1>
    % include 'contact/contact_form.html' %
% endblock %

联系人\views.py:

def contact_view(request):
    context = 'hello_contact': 'hello from contact view'
    return render(request, 'contact/contact_form.html', context)

模板\联系人\contact_form.html:

<h2>Contact Template</h2>
<p> hello_contact </p>

感谢您的帮助:)

【问题讨论】:

这种方式根本行不通。整个模板,包括包含的模板,由home 视图呈现。 contact_view 与这里的任何东西都没有任何关系,也不会被调用。 @DanielRoseman,感谢您的回答。即使它不能以这种方式工作,您将如何处理。我尝试将一个视图导入到另一个视图中,但无法正常工作 为什么不能在home 视图中完成所有操作? @DanielRoseman。第一个。因为我想学习。第二。因为据我所知,一个App应该有一个非常明确的功能。 【参考方案1】:

你不能那样做。只有一个视图会被您的传入请求调用,因此只有一个视图会呈现您的模板,包括包含的模板。因此该视图必须设置所有上下文变量。在你的情况下,home

【讨论】:

@dikrgroten,感谢您的回答。如何处理将数据从一个应用程序导入另一个应用程序。我尝试将联系人视图导入主视图,但没有成功。谢谢!

以上是关于Django 2.0:将数据从视图发送到包含在另一个模板中的模板(2 个不同的应用程序)的主要内容,如果未能解决你的问题,请参考以下文章

从 Django 中基于类的通用视图将 request.user 对象发送到 ModelForm

Django如何将数据从视图发送到模板

将 Javascript 数组发送到控制器并在另一个 URL 中呈现视图结果

Laravel - 在一台服务器上发送作业,在另一台服务器上处理

通过网络将数据从主机上的一个线程发送到另一台机器上运行的某种服务线程

将数据发送到 Django 通道