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 项目,该项目有两个应用程序,home 和 contact。
我想将上下文字典从联系人视图发送到 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
将 Javascript 数组发送到控制器并在另一个 URL 中呈现视图结果
Laravel - 在一台服务器上发送作业,在另一台服务器上处理