【发布时间】:2019-08-13 17:27:36
【问题描述】:
我使用 Django 2.1、Python 3.5 和 MySql (MariaDB 10)。 localhost 中的所有内容都是正确的,但在真实服务器中,DetailView 会引发 404 错误。请帮我。 我的查看代码是:
class Blog_detail(DetailView):
model = Post
template_name = 'detail.html'
我的网址格式是:
path('blog/<str:slug>/', views.Blog_detail.as_view(), name='detail'),
我的连接是:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydb',
'USER': 'root',
'PASSWORD': '',
'HOST': 'localhost',
# 'PORT': '3306',
'OPTIONS': {
'charset': 'utf8'
},
}
DetailView 结果仅在拉丁 URI 中正常工作,但在 utf-8 或 Unicode URI 中引发 404 错误。
【问题讨论】:
-
您能提供一些有关您的实时服务器设置的提示吗?你用的是 nginx 吗?此外,您能否在服务器环境中添加一些日志记录,以便确定请求是否到达视图? (是解析url失败,还是获取object失败?)
-
你的真实数据库中是否真的有一篇关于那个蛞蝓的帖子?
-
@Geekfish 我的服务器是 nginx。并且它无法获取对象。
-
@Daniel-roseman 是的,当然,我也将那个 slug 记录更改为拉丁文本并正常工作!仅在 utf8 中显示此错误。
-
能否添加一些日志记录,以便查看视图接收到的
slug参数是什么?您的数据库设置在服务器和本地是否相同?某种相关的东西,你可能想在mysql中使用utf8mb4而不是utf8,因为奇怪的是utf8不支持Unicode字符。