我正在开发一个与特定模型相关联的Django模板。在此模板的视图中,我正在尝试访问来自不同模型(包含科学术语的术语)的记录,这基于我将在模板中传递的参数。
我尝试使用get_context_data在数据库中查询随机术语,然后使用自定义过滤器标记将该术语替换为模板中我想要的术语。Django更聪明,但他不会让我这么做。
目前,我正在尝试定义views.py中的上下文
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个相关术语,然后以特定的方式添加它们……大量的重复和混乱。
提前感谢你的帮助。
发布于 2018-02-13 06:43:42
您对上下文所做的操作可能不会像您想象的那样工作。来说明你对上下文字典做了什么;
>>> 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 }}这样的事情,你会得到你的对象,但我不认为这在模板语法中是有效的。
因此,根据您已有的信息,我怀疑您可能想要这样做;
arg = 'my-slug'
ctx['term'] = Articles.objects.filter(slug=arg)
ctx['arg'] = arg这将为您提供用于匹配Articles模型上的插件和分配给term的查询集的arg。
https://stackoverflow.com/questions/48755904
复制相似问题