gpt4 book ai didi

python - add_message() 参数必须是 HttpRequest 对象,而不是 'str'

转载 作者:行者123 更新时间:2023-12-05 06:08:16 26 4
gpt4 key购买 nike

我目前正在开发一个将 DNA 链转化为蛋白质的 Django 网站。基本上,您输入一组可被三整除的字母,然后将其翻译成蛋白质。这部分代码完美运行。但是,我在处理这些消息时遇到了一些麻烦。如果你想查看 django 消息的文档,这里是:https://docs.djangoproject.com/en/3.1/ref/contrib/messages/ .

我想做的是:当你输入一组不能被三整除的字母时,它应该引发一个消息级别或错误(message.error)。这是代码:

class TranslatorView(View):
def translate_amino(self, codon):
return self.amino_mapper.get(codon, "")




def build_protein(self, request, phrase):
protein = []
i = 0
while i < len(phrase):
codon = phrase[i: i + 3]
amino = self.translate_amino(codon)
if amino:
protein.append(amino)
else:
print(f"The codon {codon} is not in self.mapper_1")
i += 3
if len(phrase) % 3:
messages.error(request, 'DNA CHAIN INVALID')
else:
return protein





def get(self, request, *args, **kwargs):
return render(request, 'main/translator.html')

def post(self, request, *args, **kwargs):
phrase = request.POST.get('text', 'translation')
protein = request.POST.get('text','protein')
return render(request, self.template_name, {'translation': self.translate(phrase), 'protein': ", ".join(self.build_protein(protein, phrase))})


但是,当我运行代码时,出现了这个错误:

add_message() 参数必须是一个 HttpRequest 对象,而不是 'str'。

        return render(request, self.template_name, {'translation': self.translate(phrase), 'protein': ", ".join(self.build_protein(protein, phrase))}) …
▶ Local vars
C:\Users\marcv\OneDrive\Escriptori\Translate\Scripts\src\translator\views.py, line 176, in build_protein
messages.error(request, 'DNA CHAIN INVALID')

我相信这来 self 键入 message.error 的 if 语句。

但是,我不知道怎么解决。

PS:如果你需要调用方法,不要犹豫告诉我

最佳答案

您可以通过以下方式进行函数调用:

'protein': ', '.join(self.build_protein(<b>protein</b>, phrase))

这意味着 def build_protein(self, request, phrase) 的第二个参数不是请求对象,而是 protein 的值。你应该通过请求,所以:

'protein': ', '.join(self.build_protein(<b>request</b>, phrase))

在您的build_protein(…) 方法中,如果条件未满足,您最好也返回一个值,因为如果该方法返回None' '.join(None) 会引发错误:

def build_protein(self, request, phrase):
protein = []
i = 0
while i < len(phrase):
codon = phrase[i: i + 3]
amino = self.translate_amino(codon)
if amino:
protein.append(amino)
else:
print(f'The codon {codon} is not in self.mapper_1')
i += 3
if len(phrase) % 3:
messages.error(request, 'DNA CHAIN INVALID')
<b>return ()</b>
else:
return protein

关于python - add_message() 参数必须是 HttpRequest 对象,而不是 'str',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65151895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com