在localhost上运行Django服务器

时间:2017-12-06 13:50:22

标签: django server localhost

我想使用本地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:8000http://127.0.0.1:8000等本地IP打开它。但这不起作用。我错过了什么?

1 个答案:

答案 0 :(得分:5)

好的我解决了,傻了我。我以为我试图在本地访问服务器的页面,但我不是。服务器在特定的机器上运行,我试图从另一台机器(我的笔记本电脑)本地访问它。

说明: 服务器在HERE.IS.MY.IP:8000上运行,仅在本地运行,因为我只给了端口8000:

$ python manage.py runserver 8000

我正在尝试从笔记本电脑上的Web浏览器访问服务器,因此使用的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:8000http://127.0.0.1:8000http://localhost:8000

所以我的错误是我访问服务器的页面不是来自服务器的浏览器本身,而是来自另一台机器的。