首页 > 解决方案 > 怎么做翻译?

问题描述

我目前正在编写我的第一个网站,它是一种发明语言的翻译器。您输入一个随机短语,它应该被翻译成发明的语言。这是翻译的代码:

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)会出现而没有被翻译。

在此处输入图像描述

我不知道错误在哪里。如果有人知道错误,请回答,因为我真的被卡住了,已经两个月没有进展了。

谢谢

标签: pythondjango

解决方案


您的代码中的问题在于 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;属性。


推荐阅读