Django показывает, что объект метода не подходит для подписки при отправке электронной почты - PullRequest
0 голосов
/ 11 марта 2020

У меня есть веб-сайт, и я бы хотел, чтобы пользователи связывались с нами. Таким образом, когда я нажимаю на кнопку отправки, я получаю сообщение об ошибке объект 'method' не может быть подписан

Ниже приводится ошибка:

TypeError at /contact/
'method' object is not subscriptable
Request Method: POST
Request URL:    https://massiwatechnology.com/contact/
Django Version: 2.1.8
Exception Type: TypeError
Exception Value:    
'method' object is not subscriptable
Exception Location: /home/massiwat/mysite/pages/views.py in contact, line 347
Python Executable:  /home/massiwat/virtualenv/mysite/3.7/bin/python3.7
Python Version: 3.7.3
Python Path:    
['',
 '/opt/alt/python37/bin',
 '/home/massiwat/mysite',
 '/home/massiwat/virtualenv/mysite/3.7/lib64/python37.zip',
 '/home/massiwat/virtualenv/mysite/3.7/lib64/python3.7',
 '/home/massiwat/virtualenv/mysite/3.7/lib64/python3.7/lib-dynload',
 '/opt/alt/python37/lib64/python3.7',
 '/opt/alt/python37/lib/python3.7',
 '/home/massiwat/virtualenv/mysite/3.7/lib/python3.7/site-packages']
Server time:    Wed, 11 Mar 2020 09:12:21 +0000
#Contact view.py

def contact(request):
    submitted = False
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
          #  full_name=form.cleaned_data['Th']
            mail=request.POST.get['email']
            subject=request.POST.get['objet']
            msg=request.POST.get['message']
            send_mail(mail, subject, msg, settings.EMAIL_HOST_USER, ['med.abdillah@massiwatechnology.com'],fail_silently=False)

        return HttpResponseRedirect('/contact?submitted=True')
    else:
        form = ContactForm()
        if 'submitted' in request.GET:
            submitted = True
    return render(request, 'contact.html', {'form': form, 'submitted': submitted})

А ниже приведен ContactForm.py:

class ContactForm(forms.Form):
    # nom_complet=forms.CharField(max_length=100, required=True)
    email=forms.EmailField(required=True)
    objet=forms.CharField(widget=forms.Textarea(
                        attrs={
                            "rows":1, "cols":80
                            }
                        ))
    message=forms.CharField(
                    widget=forms.Textarea(
                        attrs={
                            "class":"message two",
                            "rows":5,"cols":80
                            }
                        )
                    )

Я также хотел бы знать, правильна ли конфигурация ниже для отправки профессионального электронного письма, пожалуйста.

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST='mail.massiwatechnology.com'
EMAIL_PORT='465'
EMAIL_HOST_USER='med.abdillah@massiwatechnology.com'
EMAIL_USE_TLS=True
EMAIL_HOST_PASSWORD='mypassord'

Пожалуйста помощь

Ответы [ 2 ]

2 голосов
/ 11 марта 2020

Проблема заключается в следующих строках:

        mail=request.POST.get['email']
        subject=request.POST.get['objet']
        msg=request.POST.get['message']

.get - это метод, а не список, поэтому его следует вызывать так:

        mail=request.POST.get('email')
        subject=request.POST.get('objet')
        msg=request.POST.get('message')
1 голос
/ 11 марта 2020

Ошибка из-за квадратных скобок в request.POST.get ['email']. Просто замените квадратные скобки на () скобки. То же самое можно получить с помощью request.data.get ('email')

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...