首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值从Django模板传递到get_context_data

将值从Django模板传递到get_context_data
EN

Stack Overflow用户
提问于 2018-02-13 05:37:10
回答 1查看 553关注 0票数 0

我正在开发一个与特定模型相关联的Django模板。在此模板的视图中,我正在尝试访问来自不同模型(包含科学术语的术语)的记录,这基于我将在模板中传递的参数。

我尝试使用get_context_data在数据库中查询随机术语,然后使用自定义过滤器标记将该术语替换为模板中我想要的术语。Django更聪明,但他不会让我这么做。

目前,我正在尝试定义views.py中的上下文

代码语言:javascript
复制
class ArticlesView(DetailView):
    model = models.Articles
    template_name = 'web/articles-details.html'
    context_object_name = 'Articles_details'

    def get_context_data(self, *args, **kwargs):
        ctx = super(ArticlesView, self).get_context_data(*args, **kwargs)
        ctx['featured'] = Articles.objects.filter(featured=True)
        ctx['term','arg'] = Articles.objects.filter('slug'=='arg')
        return ctx

在上面的代码中,“特色”上下文运行良好,但“术语”上下文不起作用。这显然是错误的;我知道……但是我不知道正确的语法是什么,以及如何从模板中提供参数。(在本例中,我试图打印出“科学术语”的弹头)。

有什么想法吗?

我知道我可以在我的模型中设置一个ForeignKey来连接它们。这样做的问题是,我将在任何给定的页面上至少有4-5个‘科学术语’,因此,我必须为每个页面添加至少5个相关术语,然后以特定的方式添加它们……大量的重复和混乱。

提前感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-02-13 06:43:42

您对上下文所做的操作可能不会像您想象的那样工作。来说明你对上下文字典做了什么;

代码语言:javascript
复制
>>> context = dict()
>>> context['slug', 'arg'] = 'test'
>>> context
{('slug', 'arg'): 'test'}
>>> context['slug']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'slug'
>>> context['arg']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'arg'
>>> context['slug', 'arg']
'test'

所以在你的模板中,如果你做了像{{ slug,arg }}这样的事情,你会得到你的对象,但我不认为这在模板语法中是有效的。

因此,根据您已有的信息,我怀疑您可能想要这样做;

代码语言:javascript
复制
arg = 'my-slug'
ctx['term'] = Articles.objects.filter(slug=arg)
ctx['arg'] = arg

这将为您提供用于匹配Articles模型上的插件和分配给term的查询集的arg

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48755904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档