首页 > 解决方案 > Nginx 服务器上的 Django 没有反向匹配

问题描述

我正在尝试在托管在数字海洋上的 ubuntu 液滴上构建一个简单的博客应用程序。

我有 DJango 应用程序处于开发中期,我得到一个没有反向匹配的视图存在

这是错误:

'NoReverseMatch at / Reverse for 'post_detail' not found. 'post_detail' is not a valid view function or pattern name.'

这是我的网址模式:

from . import views

urlpatterns = [
        url(r'^$', views.post_list, name='post_list'),
        url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
]
~

这是我的看法

from django.shortcuts import render, get_object_or_404

def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})

def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})
~

这是我的 nginx 文件:

server {
listen 80;
server_name XXX.XXX.XXX.XXX;

location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
    root /home/XXXX/Django;
}

location / {
    include proxy_params;
    proxy_pass http://unix:/home/XXX/Django/BizBlog.sock;
}
}

错误发生在哪里?我无法弄清楚这一点,我以前曾与 Django 合作过,并且知道它与在我的视图函数中搜索字符串模式的 url 有关,并且无法找到它,但该函数就在那里。怎么了?

这是我的主要 url.py:

from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'', include('blog.urls')),
]

标签: djangopython-3.xubuntunginxserver

解决方案


只需停止 django 开发服务器进程,在 linux 上重新启动 windows/gunicorn 上的 services waitress 和 windows/linux 上的 nginx 即可。


推荐阅读