只是按照评论中的要求详细阐述丹尼尔的答案。
Django 是一个MVC 风格的框架。使用模型来存储和访问数据。在 Django 中,控制器称为视图,它的作用是从具有特定 URL 的用户获取请求,获取可能与该 url 关联的一些数据,然后通过某个模板推送该数据,该模板将使用视图提供的数据为了填充模板内的占位符。
这是一个解释所有方面的简单示例。想象一下,有一个网站,其中有一个书籍数据库。因此,您的模型将存储与每本书相关的信息 - 标题、作者、ISBN 号等。
# models.py
class Book(models.Model):
title = models.CharField(max_length=64)
author = models.CharField(max_length=64)
isbn = models.CharField(max_length=64)
现在您要添加一个 URLexample.com/book/<id>/
这将显示有关指定 id 的图书的所有信息。为此,需要做几件事。首先 Django 控制器必须捕获具有此模式的 url。您可以在 urls.py 文件中指定 url 模式。
# urls.py
urlpattern('',
url(r'^book/(?P<id>\d+)/$', views.book),
)
Since urls.py
指定 url 模式和视图之间的映射,它告诉 Django 每当用户访问具有指定模式的 URL 时,Django 必须将请求发送给视图book
它将知道该怎么做。此外,Django 会将书籍 ID 传递给视图。
# views.py
def book(request, id):
# get the book
book = get_object_or_404(Book, pk=id)
context = {
'book': book
}
return render_to_response('book_template.html', context)
因此,在视图内部,给定书籍的 ID,它使用模型从数据库中查找书籍,如果找不到,则会向用户返回 404 错误。然后它会填充一个我称之为的字典context
以及一些将传递给模板的值。模板的工作就是把这个context
字典并使用其中的值来填充模板内的一些占位符。
# book_template.html
<html>
<head>...</head>
<body>
<h1>{{ book.title }}</h1>
<p>Author: {{ book.author }}</p>
<p>ISBN: {{ book.isbn }}</p>
</body>
</html>
因此模板将从视图中获取上下文,然后使用book
上下文内部,以便填充内部的值{{ }}
.
在您的情况下,您试图将上下文返回给用户,但这没有多大意义。您所要做的就是创建一个模板,该模板将采用该上下文{ 'phone': instance, 'line_set': client_lines }
并根据它,将呈现一些 HTML,并将其返回给用户。您可以使用 AJAX 提取该 HTML,然后根据需要使用它。
希望这能为您澄清一些概念。
Django 文档非常好,所以我建议您也阅读介绍。它将解释我在这个答案中使用的所有语法和一些快捷方式(渲染到响应 https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render-to-response, etc).