让django开发服务器捕获除主页之外的任何内容

让django开发服务器捕获除主页之外的任何内容,django,nginx,Django,Nginx,nginx/1.4.6(Ubuntu) Django 1.8.4 这是我第一次在live web服务器上部署任何东西。 主机为我提供了ip地址和技术域名 此时,我只想使用Django development webserber来显示站点的工作情况。这只是我自己的,不是一个真正的网站。 稍后一切都将通过gunicorn进行 在/etc/nginx/sites available/default中: server { listen 80 default_server; listen

nginx/1.4.6(Ubuntu) Django 1.8.4

这是我第一次在live web服务器上部署任何东西。 主机为我提供了ip地址和技术域名

此时,我只想使用Django development webserber来显示站点的工作情况。这只是我自己的,不是一个真正的网站。 稍后一切都将通过gunicorn进行

在/etc/nginx/sites available/default中:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        proxy_pass http://localhost:8000;
    }

}
然后在Django项目中:

在url.py中

from lists import views as list_views
from lists import urls as list_urls

urlpatterns = [
    #url(r'^admin/', include(admin.site.urls)),
    url(r'^$', list_views.home_page, name="home"),
    url(r'^lists/', include(list_urls)),
    ]

**In lists/urls.py**

from lists import views

urlpatterns = [
    url(r'^new$', views.new_list, name='new_list'),    
    url(r'^(\d+)/$', views.view_list, name='view_list' ),    
    url(r'^(\d+)/add_item$', views.add_item, name='add_item'),    
    ]

**lists/views.py**

import logging

def home_page(request):
    logger = logging.getLogger(__name__)
    logger.error('In home_page')


def view_list(request, list_id):
    logger = logging.getLogger(__name__)
    logger.error('In view_list')


def new_list(request):
    logger = logging.getLogger(__name__)
    logger.error('In new_list')
然后,当我通过ip地址或技术链接访问我的站点时,我可以看到主页

但是当我转到/lists/new时,我在浏览器中看到404。以及

nginx/1.4.6 (Ubuntu)
这意味着Django服务器甚至没有得到通知。检查日志就证明了这一点。没有消息“在新列表中”。Django开发服务器肯定没有捕捉到这里的信号


你能帮我解决这个问题吗?

如果你想检查你的Django项目是否运行良好,你不需要Nginx。只需
/manage.py runserver example.com:8000
并通过
http://example.com:8000
。如果端口未打开,您也可以使用
服务Nginx stop
停止Nginx,然后在端口80上运行Django


此设置似乎告诉Nginx尝试查看文件是否存在,如果不存在,则返回http404。我认为它永远不会到达第二条线

location / {
    try_files $uri $uri/ =404;
    proxy_pass http://localhost:8000;
}
尝试删除“Try_files”行,并为要提供服务的静态文件添加额外的
location
规则

location /static/ {
    try_files $uri $uri/ =404;
}
location / {
    proxy_pass http://localhost:8000;
}