Django:self.success_messages % fiche.__dict__ 中的“%”是什么意思

Django : What does "%" mean in self.success_messages % fiche.__dict__

自从学习Python以来,经常看到和使用:

class FicheDeleteView(LoginRequiredMixin, DeleteView):
    model = Fiche
    success_url = reverse_lazy('fiche-list')
    success_messages = "La Fiche %(ref_id)s a bien été supprimée"

    def delete(self, request, *args, **kwargs):
        fiche = self.get_object()
        messages.success(self.request, self.success_messages %
                         fiche.__dict__)
        return super(FicheDeleteView, self).delete(request, *args, **kwargs)

即使我看到了这个机制的效果,我也不确定是否理解。

这是否意味着:我将所有 FICHE 字典发送给“反向惰性”,并在我的 message.success 中检索 fiche.ref_id%(ref_id)s ?

% 运算符是一个旧的字符串格式化占位符,它允许您在字符串中包含变量。因此,如果您想在字符串中包含变量 name,则可以使用 % 运算符作为占位符。

name = 'world'
print('Hello, %s' % name)
>>> Hello, world

在您的示例中,success_message 中的 % 运算符将字典作为变量,然后从该字典中的键 ref_id 访问值。

success_messages = "La Fiche %(ref_id)s a bien été supprimée"
example_dict = {'key_1': 'value_1', 'ref_id': 'value_2'}
print(success_messages % example_dict)
>>> La Fiche value_2 a bien été supprimée

从 Python >= 3.6 开始,您可以使用 f-strings 使其更具可读性:

example_dict = {'key_1': 'value_1', 'ref_id': 'value_2'}
print(f"La Fiche {example_dict['ref_id']} a bien été supprimée")
>>> La Fiche value_2 a bien été supprimée

您可以阅读有关 python 字符串格式的更多信息 here