Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何做一名翻译?_Python_Django - Fatal编程技术网

Python 如何做一名翻译?

Python 如何做一名翻译?,python,django,Python,Django,我目前正在编写我的第一个网站,这是一个发明的语言翻译。你输入一个随机的短语,它应该被翻译成发明的语言。以下是翻译代码: class TranslatorView(View): template_name= 'main/translated.html' def get (self, request, phrase, *args, **kwargs): translation = "" for letter in phrase:

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

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%}
{%csrf_令牌%}
翻译你的DNA链



翻译 {%endblock内容%}
应在其中翻译文本的模板:

{% 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%}
{%extends“base.html”%}
{%block content%}
DNA成功地翻译成



{{翻译}} {%endblock内容%}
事情是这样的,当我翻译短语并将我重定向到已翻译的模板时,我编写的文本(例如:dadada)会在未翻译的情况下出现

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


谢谢

您的代码中的问题在于post方法,您只是将短语sent并返回到上下文中

为了使代码更具可读性,我在视图中做了一些小改动,比如在函数中分离“翻译”过程,在字典中分离替换字符

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)})

最后一个建议是,不要在html中使用
标记,因为它已被弃用,最好使用css
文本对齐:居中属性。

天哪,它看起来好多了,终于起作用了。非常感谢你。我希望有一天我能像你一样擅长编码。