Ошибка при запуске сервера Django. Что делать?
Имя хоста написано кириллицей и Python 3.4 или старее?
Windows: socket.gethostbyaddr(name) fails for non-ASCII hostname
bugs.python.org/issue26227
- Обновить Python
- Переименовать хост
- Либо запускать Django передав ему ip адрес вместо имени хоста python manage.py runserver 127.0.0.1:8000
UPD:
я попробовал воспроизвести подобную ошибку в среде Win 10 (в VirtualBox) и у меня получилось только в случае
если в файле hosts присутствует алиас с кириллицей и локаль Windows русская.
Если удалить русский, оставив только английский (на русском только интерфейс системы), то всё ок.
Так-же не удалось воспроизвести ошибку если при запуске указывать ip хоста как 127.0.0.2
python manage.py runserver 127.0.0.2:8080
При условии, что в hosts нет алиаса с кириллицей для него.
На чистой системе (установлены только Python 3.7.2 и Pycharm Community, русская локаль) подобной ошибки нет.
Заглянул в исходники socket.py и socketmodule.c
Скорее всего данная особенность связаны с этой частью исходного кода Python на C, а именно PyUnicode_DecodeFSDefault
Далее, если имя хоста не написано кириллицей и в hosts нет кириллицы следует вывод, что с высокой долей вероятности дело в стороннем софте(антивирус, кривой кряк и т.д.).
Источник
Django /manage.py runserver не работает (Windows)
Я установил python 2.7.10 в windows. Я установил django в path c:python27/scripts/ с командой pip install django и создал проект с командой django-admin startproject mysite из того же пути.
Теперь для запуска сервера я перешел на путь c:python27/scripts/mysite и выполнил команду manage.py runserver / manage.py runserver 0.0.0.0:8000 , и это не имеет никакого эффекта.
где я ошибся, а также я не мог работать с консолью python. и я не мог перенаправить на свой проект с python CMD. все, что я сделал, это с консоли windows.
Редактировать: Скриншот выполнения
7 ответов
Я столкнулся с проблемой при попытке запустить сервер с помощью команды python manage.py runserver 0.0.0.0:8000 Это показывает C:\abc>python manage.py runserver 0.0.0.0:8000 Validating models. 0 errors found Django version 1.4.9, using settings ‘abc.settings’ Development server is running at.
Я разрабатываю веб-сайт в Ubuntu, используя django. Все работает нормально. Теперь я хочу изменить свой компьютер, который использует Windows. Когда я пытаюсь запустить сервер, он дает: E:\DEGNet>py manage.py runserver File manage.py, line 14 ) from exc ^ SyntaxError: invalid syntax.
Первым шагом было установить переменную окружения.
- windows key + pause или Control Panel\System and Security\System
- Предварительные настройки системы (это откроет свойство системы)
- перейдите к Advanced tab > Environment variable
- Изменить путь — добавить ;c:\python27 в поле значение переменной
- Перезапуск CMD
тогда /python manage.py runserver должен работать
Попытка настроить virtualenv для вашего проекта.
Эта же проблема возникла со мной при попытке запустить тестовый сервер
с PowerShell по Windows 10. Согласно сайту Django, может возникнуть проблема с типом аргументов, передаваемых из PowerShell.
Мой обходной путь состоял в том, чтобы использовать virtualenv. Как только это было установлено с django, установленным через pip, команда runserver сработала.
Лучшее решение-установить Python из Microsoft Store . В этом случае вам не придется беспокоиться о переменных окружения и пути. Windows обнаружит все это автоматически.
Попробуйте это исправить ребята:
1. Щелкните правой кнопкой мыши на значке windows / start в левом нижнем углу и запустите Windows Powershell от имени администратора.
2. Затем введите cd
/ и позже снова измените путь к папке проекта.
3. тип python manage.py runserver и нажмите Enter.
была такая же проблема. исправил это, проверив совместимость версий python и django . Если вы все еще боретесь с этим обновлением или убедитесь, что они оба совместимы друг с другом в виртуальном «env», который вы настраиваете.
Я думаю, вы забыли добавить python к переменным среды. Итак, во время установки щелкните checkbox с именем «Add Python 3.9 по PATH», чтобы добавить переменные среды. или вы можете просто добавить путь позже.
После установки C:\Python в переменных среды выполнение следующей команды помогло:
Похожие вопросы:
В настоящее время я работаю над windows и пытаюсь выучить Django. Я уже сделал свой проект Django, и когда я иду с командной строкой в каталог, в котором есть файл manage.py и тип manage.py.
Я пытаюсь следовать учебнику django. Я бегу на windows+eclipse. Когда я запускаю python manage.py runserver , я получаю сообщение Validating models. и после этого не вижу никакого прогресса. Я.
проблема Когда я запускаю python manage.py runserver , я получаю ошибку ImportError: cannot import name AdminMediaHandler . экс.
Я столкнулся с проблемой при попытке запустить сервер с помощью команды python manage.py runserver 0.0.0.0:8000 Это показывает C:\abc>python manage.py runserver 0.0.0.0:8000 Validating models.
Я разрабатываю веб-сайт в Ubuntu, используя django. Все работает нормально. Теперь я хочу изменить свой компьютер, который использует Windows. Когда я пытаюсь запустить сервер, он дает.
Я бы на некоторое время отошел от компьютера (ПК), но у меня есть проект на шее, поэтому я получил qpython. Я успешно установил Django, но после создания проекта (успешно со всеми файлами. ), но.
Я работал над первоначальным учебником и столкнулся с массой проблем с моей установкой anaconda с использованием python 2.7. В конце концов он не запустил бы сервер. Как бы то ни было, я решил.
Django сервер не работает по команде: python manage.py runserver (при предоставлении номера порта также) Я использую windows 8, путь задается в переменных окружения. Я пробовал переустановить и.
Привет, я новичок в django, и я не могу запустить свой веб-сервер. Во-первых, я просмотрел несколько других потоков, и я искал решение в течение 4 часов, и я не мог найти никакой помощи. Так вот что.
Источник
Accessing Django Runserver on Shared Hosting
I’m developing a Django application on a shared hosting service (hostmonster) and am, of course, unable to access the runserver on the default localhost ip of 127.0.0.1:8000 over Firefox. The Django Project site’s documentation details how to set up remote access to the run-server, but I’m not having any success with that. Setting the runserver to 0.0.0.0:8000 leaves it inaccessible. Though I figured it wouldn’t work, I tried to configure the runserver to my home ip address. That gave me a «That IP address can’t be assigned-to» error, as I’d expected.
So, I tried configuring it to my hosted IP, the one through which I SSH in the first place. That set up properly, but still was unable to access the address via Firefox. When I plug in the IP address on its own, I just get a hostmonster error page. When I affix the port number, the connection times out. When I plug in the IP, port number and the /admin to access the Django admin page I’ve created, I also time out.
4 Answers 4
Other comments about (not) using runserver on production environments apply.
If you really must run it this way I would recommend using SSH tunnelling, via the -L switch.
e.g. ssh -L 8888:127.0.0.1:8000 @
Then you should be able to view the site on your local machine via http://localhost:8888
This is assuming you are only trying to make the application available to yourself during development.
Running : python manage.py runserver 0.0.0.0:8000
Hosts the website on port 8000 and can be accessed over http://site.com:8000/
Running : python manage.py runserver 0.0.0.0:80 (You would need the root access)
This hosts the website on port 80 and can be accessed over http://site.com/ (port 80 is implicit here).
But, since you say that you are on a shared hosting — so you won’t get the root access, so you can’t host on port 80 like this. For porting hosting on port 80 on a shared hosting you would have to create virtual hosting on the webserver running on that shared server and that can only be done if you own a domain name.
So, for testing purposes — I would suggest that you use port 8000 and use it via http://site.com:8000/ from your home.
Here, 0.0.0.0 means its hosted for all ip ranges. (change site.com with your ip address if you don’t have the domain name)
If you are still not able to access — that might mean that port hosting is banned on that server for users, since that is not easy on a shared server with many many sharing users.
I’m betting that port 8000 is blocked. That explains the timeouts you mention in the last couple sentences: the firewall is set to simply drop the packets and not return any connection refusal responses.
You’re going to have to ask your hosting company if there’s a way around this, but there might not be one. At the least, they’ll have to open a non-root port (8000 or something else over 1023), but the OS can’t tell when it’s you opening the port or something else, so it’ll be a potential security hole (e.g. an intruder can set up something to listen for commands on that port, just like you are).
runserver wasn’t really designed to be run on the production box. It’s designed to be run on your development machine, with a small test database or something. This lets you get most of the bugs out. Then you push your code to a beta server, configured with the real server apps (e.g. apache on port 80) and databases and such, to do the heavy testing (make sure there’s a filter for what IPs can connect, at least). Then you push to production from there. Or not; there are lots of ways to do this.
First, a webserver typically has at least two «interfaces», each with one or more IPs. The «loopback» interface will have the IP 127.0.0.1, and is ONLY accessible from the machine running the server.
So, running on 127.0.0.1:8000 means that you are telling runserver to be accessible ONLY from that server itself, on port 8000. That’s secure, but a little rough for testing. In order to see the result in a web browser you would need to use an SSH tunnel with port forwarding. (I’d explain how to do that, but honestly, it won’t solve your real issue. But I’ll come back to that.)
Running on :8000 means that you are telling runserver to be accessible from the internet — which is probably what you want. If that’s not working, then it probably means they’re firewalling the port. You could contact support and ask them to open a hole, OR use an SSH tunnel, but at this point I have to ask: What are you trying to achieve?
You shouldn’t use runserver for production. Use runserver on your local machine for testing, then deploy to Hostmonster. (Apparently they support Django via FastCGI, according to their website.) Don’t use runserver on Hostmonster, it won’t do what you want.
Источник
Блог на Django #3: Запуск сервера
В Django есть веб-сервер, который нужен для быстрой проверки кода. Благодаря ему не нужно заниматься наладкой полноценного рабочего решения. При его запуске сервер продолжает проверять изменения в коде и самостоятельно перезагружается. Но некоторые вещи он не замечает: такие как появление новых файлов в проекте. В таком случае нужно перезагрузить сервер вручную.
Запустить сервер можно с помощью следующей команды в корневом каталоге:
Появятся приблизительно такие строки:
Теперь нужно открыть https://127.0.0.1:8000/ в браузере. Страница сообщит, что проект работает. Как на следующем скриншоте:
Это изображение сообщает, что Django работает. Если взглянуть на консоль, то можно увидеть запрос GET от браузера:
Каждый HTTP-запрос регистрируется отдельно. В командной строке будут отображаться все ошибки, которые появятся в процессе работы.
Можно запустить сервер на другом порте или использовать другой файл настроек с помощью таких команд:
Работая с разными средами, требующими разных настроек, можно создать несколько файлов для каждой из них.
Этот сервер стоит использовать только для разработки, но не для полноценного использования. Чтобы развернуть Django в производственной среде (production) его нужно запустить в качестве WSGI-приложения с помощью реального инструмента: Apache, Gunicorn или uWSGI.
Источник
Как заставить Django перезапустить runserver при изменении шаблона?
когда я делаю модификацию в исходном файле python в своем проекте, Django обнаруживает это и перезапускает сам runserver. Но когда я изменяю шаблон django, я должен убить runserver и перезапустить его снова : как я могу сделать, чтобы runserver перезапустился автоматически при изменении шаблона ?
7 ответов
файл по умолчанию будет считываться с диска по каждому запросу, поэтому нет необходимости перезапускать что-либо.
есть загрузчик шаблонов кэширования, но по умолчанию он отключен. См.документация для получения дополнительной информации.
чтобы добавить к ответу кнутина, проблема, с которой вы столкнулись, точно вызвана FetchFromCacheMiddleware, поэтому все, что вам нужно сделать, это отключить его в settings.py файл выглядит следующим образом:
выполнить touch против одного из исходных файлов Python.
, потому что runserver мониторы .py-файлы для изменений, он не перезапускается для изменения шаблонов (.формат HTML.) Вы можете запустить этот перезапуск, практически отредактировав любой из них .py файлы с помощью touch команда, которая обновляет свою измененную дату и оставляет все остальное содержимое одинаковым.
У меня была аналогичная проблема, однако мои шаблоны требовали запуска скрипта django manager для их обновления. Нет простого способа заставить django смотреть другие типы файлов, но вот работа, которую я использую.
это автономный скрипт, который я теперь использую для запуска dev-сервера:
этот скрипт работает при следующих предположениях:
- используя питон3
- этот сценарий помещается вдоль стороны manager.py
- manager.py является runnable
- веб-приложение называется веб-сайт
- на веб-сайте есть файл под названием website/urls.py
- вы используете GNU / Linux, который поддерживает inotify
вам не нужно перезапускать сервер, чтобы перезагрузить изменения шаблона.
в производстве вы можете сделать это:
В settings.py, для шаблонов config
— Удалите параметр APP_DIRS
— Вместо этого добавьте этот параметр в OPTIONS:
почему это работает:
По умолчанию параметр DEBUG имеет значение True (в режиме разработки). В этом режиме Django не кэширует шаблоны. Но в производственном режиме (т. е. DEBUG = False) Django включает шаблон кэширование. Следовательно, перезапуск сервера необходим для перезагрузки отредактированного / затронутого шаблона.
Примечание:
Помните о том, что-отключив кэширование шаблонов на вашей производственной машине, вы добавите накладные расходы для каждого запроса, который проходит.
файл будет считываться с диска без необходимости перезагрузки runserver, просто убедитесь, что вы отключили все кэширование.
отключить кэшированный загрузчик шаблонов
загрузчик кэшированных шаблонов по умолчанию не включен, но вы могли бы включить это в настройках производства. Убедитесь, что загрузчик кэшированных шаблонов не включен в настройках разработки. документы Django на загрузчике кэшированных шаблонов
использовать манекен кэширование базы
когда вы используете структуру кэширования django, это может привести к тому, что шаблоны не будут перезагружаться. Платформа по умолчанию Django использует кэширование локальной памяти, что означает, что вам придется явно настроить фиктивное кэширование, чтобы отключить структуру кэширования. документы Django на фиктивное кэширование
другое решение — убедиться, что у вас есть debug значение true внутри вас TEMPLATES config в settings.py
, когда debug is False вы должны вручную перезапустить сервер, чтобы увидеть любые изменения, внесенные в шаблоны (так как они не запускают автоматический перезапуск)
Источник