Django DetailView повысить 404 не найдена ошибка в реальном сервере - PullRequest
0 голосов
/ 22 марта 2019

Я использую Django 2.1, Python 3.5 и MySql (MariaDB 10).Все в localhost корректно, но на реальном сервере DetailView вызывает ошибку 404.Пожалуйста, помогите мне.Мой код просмотра:

class Blog_detail(DetailView):
    model = Post
    template_name = 'detail.html'

и шаблон URL:

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.

1 Ответ

1 голос
/ 10 июня 2019

Используйте FBV вместо CBV.

Используйте следующий код:

from django.shortcuts import get_object_or_404
from django.utils.encoding import uri_to_iri 

def blog_detail(request, slug):
    post= get_object_or_404(Post, slug=uri_to_iri(slug))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...