【发布时间】:2018-12-17 18:34:51
【问题描述】:
我正在尝试在托管在数字海洋上的 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')),
]
【问题讨论】:
-
请同时发布您的主要
urls.py。你在用namespaces吗? -
为什么你认为这与 nginx 有关系?它在开发中有效吗?
-
发布了我的主要 url.py,我会检查它是否在 dev 中有效。
-
刚刚检查是的,它可以正常工作。
-
对可能导致问题的原因有什么想法吗?
标签: django python-3.x ubuntu nginx server