Как решить ошибку 405 в представлении на основе классов

#python #html #django

#python #HTML #django

Вопрос:

В настоящее время я работаю над своим первым веб-сайтом. Но я сталкиваюсь с этой проблемой. У меня есть этот класс:

 class TranslatorView(View):
    def translator(self, request, phrase):
        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 translation, render(request, 'main/translator.html')
  

И URL-адрес для этого класса

 path('translator/', TranslatorView.as_view(), name='translator'),
  

Когда я захожу на веб-сайт, появляется ошибка HTTP 405.
Я думаю, что у меня проблема в классе. Но Idk, как ее решить

Комментарии:

1. Значение 405 означает, что вы используете метод (GET / POST / …), который не разрешен. Таким образом, вам необходимо реализовать def get def post , и т.д. для поддержки соответствующих методов HTTP.

2. Как мне это сделать

Ответ №1:

Значение 405 означает, что вы используете метод (GET / POST / …), который не разрешен. Таким образом, вам необходимо реализовать def get def post , и т.д. для поддержки соответствующих методов HTTP.

Например:

 class TranslatorView(View):
    
    def get(self, request, phrase):
        translation = ''
        for letter in phrase:
            lletter = letter.lower()
            isup = letter.isupper()
            if lletter == 'a':
                translation  = 'uU'[isup]
            elif lletter == 't':
                translation  = 'aA'[isup]
            elif lletter == 'c':
                translation  = 'gG'[isup]
            elif lletter == 'g':
                translation  = 'cC'[isup]
        return render(request, 'main/translator.html', {'translation': translation})  

но это пока не сработает, поскольку phrase не является параметром URL. Вы должны добавить это в путь:

 path('translator/<str:phrase>/', TranslatorView.as_view(), name='translator'),  

Комментарии:

1. Я добавил параметр url в path, я скопировал ‘translator/<str:phrase>/’ в панель навигации, но там написано, что это не зарегистрированное пространство имен

2. @marcjuegosnt: вам, конечно, нужно добавить значение для параметра, например {% url 'translator' 'CAGT' %} .

3. @MarcJuegos_Nt: кроме того, если вы не указали app_name = '' в urls.py , то URL-адрес не имеет префикса с пространством имен…

4. Я не указывал имя приложения, потому что это settings.py . Но я, вероятно, ошибаюсь, потому что я новичок в программировании

5. Мне кажется, что эта ошибка: не удалось разобрать остаток: «фраза» из фразы «переводчик»»