python - 怎么做翻译?
问题描述
我目前正在编写我的第一个网站,它是一种发明语言的翻译器。您输入一个随机短语,它应该被翻译成发明的语言。这是翻译的代码:
class TranslatorView(View):
template_name= 'main/translated.html'
def get (self, request, phrase, *args, **kwargs):
translation = ""
for letter in phrase:
if letter.lower() in "a":
if letter.isupper():
translation = translation + "U"
else:
translation = translation + "u"
elif letter.lower() in "t":
if letter.isupper():
translation = translation + "A"
else:
translation = translation + "a"
elif letter.lower() in "c":
if letter.isupper():
translation = translation + "G"
else:
translation = translation + "g"
elif letter.lower() in "g":
if letter.isupper():
translation = translation + "C"
else:
translation = translation + "c"
return render(request, 'main/translator.html', {'translation': translation})
def post (self, request, *args, **kwargs):
phrase = request.POST.get('text', 'translation')
translation = phrase
context = {
'translation': translation
}
return render(request,self.template_name, context)
输入短语的模板:
{% extends "base.html"%}
{% block content%}
<form action="{% url 'translated' %}" method="post">{% csrf_token %}
<div class="form-group">
<center><h2 class = "display-3">TRANSLATE YOUR DNA CHAIN</h2></center>
<br>
<br>
<textarea class="form-control" name='text' id="exampleFormControlTextarea1" rows="6"></textarea>
<br>
<button type='Submit' class= "btn btn-primary btn-lg btn-block">Translate</button>
</div>
</form>
{% endblock content %}
应翻译文本的模板:
{% extends "base.html"%}
{% block content%}
<div >
<center><h2 class = "display-4">DNA TRANSLATED SUCCESFULLY INTO</h2></center>
<br>
<br>
<br>
<center>
<h3>
{{ translation }}
</h3>
</center>
</div>
{% endblock content%}
事情是这样的,当我翻译短语并将我重定向到翻译后的模板时,我写的文本(例如:dadada)会出现而没有被翻译。
我不知道错误在哪里。如果有人知道错误,请回答,因为我真的被卡住了,已经两个月没有进展了。
谢谢
解决方案
您的代码中的问题在于 post 方法,您只是将发送的短语返回到上下文中。
我在视图中进行了一些小的更改以使代码更具可读性,例如将函数中的“翻译”过程与字典中的替换字符分开。
from django.views import View
from django.shortcuts import render
class TranslatorView(View):
template_name = 'main/translated.html'
mapper = {
"a": "u",
"t": "a",
"c": "g",
"g": "c"
}
def translate(self, phrase):
translation = ""
for letter in phrase:
if letter.lower() in self.mapper:
translation += self.mapper[letter.lower()].upper() if letter.isupper() else self.mapper[letter]
return translation
def get(self, request, *args, **kwargs):
return render(request, 'main/translator.html')
def post(self, request, *args, **kwargs):
phrase = request.POST.get('text', 'translation')
return render(request, self.template_name, {'translation': self.translate(phrase)})
最后一个建议,不要<center>
在你的 html 中使用标签,因为它已被弃用,最好使用 csstext-align: center;
属性。
推荐阅读
- reactjs - 即使我正确设置了路径,React 也没有找到模块
- javascript - 电子,IPC 通信似乎无法正常工作
- python-3.x - 如何使用 telnetlib(python 3.7)从 telnet 连续打印数据
- javascript - Laravel DataTable 自定义搜索
- javascript - 如何使用文本区域中特定行的值来提交 GET 表单
- javascript - 如何在 React 中单击按钮时访问另一个组件的方法?
- c++ - 如何检查C中随机数列表中的元素
- angular - Angular 8:不是一个函数,如何修复
- ksqldb - KSQL:尝试从流中选择 * 时出现杰克逊错误
- python - 从列表中删除项目的意外行为