Никакое соединение не может быть сделано, потому что целевая машина активно отказалась от него (Django)
Я следил за Django Book до седьмой главы, и я в настоящее время возился с формами, GET, POST и всей этой добра. В какой-то момент руководство заставило меня выяснить реакцию, после того, как форма заполнена и отправлена, но когда я отправляю данные формы, я получаю эту ошибку:
error at /contact/
[Errno 10061] No connection could be made because the target machine actively refused itRequest Method: POST
Request URL: http://127.0.0.1:8000/contact/
Django Version: 1.3
Exception Type: error
Exception Value: [Errno 10061] No connection could be made because the target machine actively refused it
Exception Location: C:\Python27\lib\socket.py in create_connection, line 571
Python Executable: C:\Python27\python.exe
Python Version: 2.7.2
Другими словами, до этого момента у меня не было проблем с портом. Я просто открыл порт 10061 явно в брандмауэре Windows, но безрезультатно. (Я закрыл и открыл runserver
, после того как я изменил правила.)
Я запускаю Windows 7, и суть моего вопроса в том, что именно это сообщение об ошибке означает больше, чем то, как с ним бороться (оба предпочтительнее, конечно).
EDIT: Я также перенаправил порт 8000 в брандмауэр Windows (применительно ко всем профилям, TCP), но я все равно получаю то, что похоже на ту же ошибку.
Ответы
Ответ 1
Мне удалось выяснить, в чем проблема (без сообщения об ошибке). Как оказалось, мне нужно было настроить свой почтовый сервер:
Обратите внимание, что для отправки электронной почты с помощью send_mail() ваш сервер должен быть настроен для отправки почты, а Django должен быть проинформирован о вашем сервере исходящей электронной почты. См. http://docs.djangoproject.com/en/dev/topics/email/ для специфики.
Думаю, я мало думал о том, что это означало, но я был направлен в направлении этого руководства, и все в конечном итоге начало нажмите кнопку.
Спасибо всем за то, что они кричат с их советами. Это одно бесполезное сообщение об ошибке, и я могу только предположить, что люди, которые помогли мне, знали только ответ, потому что они испытали то же самое.
Ответ 2
Я получил эту ошибку, пытающуюся использовать django.core.mail.send_mail
. Мне нужно только это для запуска некоторых учебных пособий. Мне не нужно отправлять почту.
Решение для меня состояло в том, чтобы добавить эту единственную переменную в settings.py
:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Он отправляет содержимое сообщения электронной почты на вывод консоли, что идеально подходит для того, что я делаю.
Документы: https://docs.djangoproject.com/en/1.7/topics/email/#django.core.mail.backends.smtp.EmailBackend
Ответ 3
10061 не номер порта, номер ошибки. Вы хотите открыть порт 8000.
См. этот ответ для тех, у кого была такая же проблема, потому что они использовали неправильный порт: Не удалось установить соединение, потому что целевой компьютер активно отказался от него
Ответ 4
В settings.py, для вывода консоли вам нужно
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Для smtp
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
Также см. этот документ здесь
https://docs.djangoproject.com/en/1.6/topics/email/
Ответ 5
Код пытается подключиться к http://127.0.0.1:8000/contact/ - порт 8000 недоступен (брандмауэр) или нет сервера.
Ответ 6
Я никогда не использовал DJango, но, судя по ошибке, сервер не прослушивает порт 8000 (или какое-либо ограничение на брандмауэре/сервере блокирует порт 8000 на локальном хосте)
Ответ 7
Если вы используете gmail, вам нужно разблокировать Captcha для включения Django, чтобы отправить его вам. https://accounts.google.com/displayunlockcaptcha
Я могу решить свою проблему этого типа, разблокировав Captcha для учетной записи gmail, которую я использовал в приложении. Вы можете перейти к этой в другой, чтобы разблокировать Captcha.
Надеюсь, что это будет полезно:)