在本地主机上运行 Django 服务器
Posted
技术标签:
【中文标题】在本地主机上运行 Django 服务器【英文标题】:Running Django server on localhost 【发布时间】:2018-05-20 10:21:11 【问题描述】:我想使用本地 IP 在本地运行 Django 服务器。
我在此处映射了localhost
:
$ head -n 1 /etc/hosts
127.0.0.1 localhost
我的settings.py
中有这段代码:
import os
ALLOWED_HOSTS = ['HERE.IS.MY.IP', 'localhost', '127.0.0.1']
print "ALLOWED_HOSTS: ".format(ALLOWED_HOSTS)
在我的 mysql 数据库中,我有这个站点表:
mysql> select * from django_site;
+----+--------------------+----------------+
| id | domain | name |
+----+--------------------+----------------+
| 1 | example.com | example.com |
| 5 | HERE.IS.MY.IP:8000 | projectsdb |
| 8 | 127.0.0.1:8000 | projectsdb |
| 9 | localhost:8000 | projectsdb |
+----+--------------------+----------------+
我在127.0.0.1
本地运行服务器:
$ python manage.py runserver 8000
ALLOWED_HOSTS: ['HERE.IS.MY.IP', 'localhost', '127.0.0.1']
Performing system checks...
# ...
Django version 1.10.5, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
如果我去这个地址http://HERE.IS.MY.IP:8000
它可以工作。但我当然想使用http://localhost:8000
或http://127.0.0.1:8000
等本地IP 打开它。但这不起作用。我错过了什么?
【问题讨论】:
这应该可以。会发生什么? 你可以试试这样吗:ALLOWED_HOSTS = ['*']
我在我的settings.py
中使用了ALLOWED_HOSTS = ['*']
,现在http://HERE.IS.MY.IP:8000
、http://localhost:8000
和http://127.0.0.1:8000
都不起作用。
您的/etc/hosts
是完全默认的还是您编辑过的?访问 localhost:8000 时收到什么错误消息?
@PeteTinkler 我从未编辑过我的/etc/hosts
【参考方案1】:
好吧,我解决了,我很傻。我以为我试图在本地访问服务器的页面,但我没有。服务器在特定机器上运行,我试图从另一台机器(我的笔记本电脑)本地访问它。
说明:
服务器运行在HERE.IS.MY.IP:8000
,只在本地运行,因为我只给了8000端口:
$ python manage.py runserver 8000
我正在尝试从笔记本电脑上的网络浏览器访问服务器,因此使用的 IP 与 HERE.IS.MY.IP
不同。
如果我想从我的笔记本电脑访问http://HERE.IS.MY.IP:8000
上的页面,我别无选择,只能通过像这样运行服务器来允许服务器访问外部机器:
$ python manage.py runserver 0.0.0.0:8000
或
$ python manage.py runserver HERE.IS.MY.IP:8000
然后在我笔记本电脑的浏览器上使用完整的 IP 访问它(除非我将它映射到 /etc/hosts
)http://HERE.IS.MY.IP:8000
现在如果我想从服务器端访问本地页面only
,我必须运行
$ python manage.py runserver 8000
,从上述服务器打开浏览器,我就可以成功联系到页面http://HERE.IS.MY.IP:8000
、http://127.0.0.1:8000
和http://localhost:8000
了。
所以我的错误是我不是从服务器的浏览器本身而是从另一台机器的浏览器访问服务器的页面。
【讨论】:
运行时出现此错误:python manage.py runserver avm:8000 \n "Error: [Errno 11001] getaddrinfo failed"以上是关于在本地主机上运行 Django 服务器的主要内容,如果未能解决你的问题,请参考以下文章