我目前正在开发一个Django网站,它可以将DNA链翻译成蛋白质。基本上,您输入一组可被三整除的字母,然后它就会被翻译成蛋白质。这部分代码完美地运行着。然而,我在消息方面遇到了一些麻烦。如果您想查看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')
我相信这是来自于if语句中我输入的message.error。
然而,我不知道如何解决它。
附注:如果您需要调用方法,请告诉我。