Подтвердить что ты не робот

Никакое соединение не может быть сделано, потому что целевая машина активно отказалась от него (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), но я все равно получаю то, что похоже на ту же ошибку.

4b9b3361

Ответ 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

Ответ 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.

Надеюсь, что это будет полезно:)