Возникновение ошибки 404 с помощью django-hosts в Django
У меня следующая проблема. Я использую django-hosts для таких поддоменов, как blog.example.com, es.example.com.
Проблема в том, что есть урлы, где я управляю id, например: blog.example.com/url/id
Допустим, пользователь ничего не трогает, потому что все - OK 200, но если пользователь переходит от умного и трогает id к несуществующему, сайт возвращает 404.
Но тут возникает проблема, при использовании django-hosts если я делаю handler404 в урлах поддомена. Он выдает ошибку 500, и если я затем делаю handler500 в урлах поддомена, буквально, это ломает сервер, поскольку тогда apache говорит мне, что есть проблема в сервере.
Здесь я оставляю свой url.py поддомена.
from django.urls import path
from django.views.generic.base import TemplateView
from django.conf.urls import handler404, handler500
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.sitemaps.views import sitemap
# MODULO PROPIO
from . import views
from .sitemaps import MapaDeSitio
sitemaps = {
'blog': MapaDeSitio
}
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + [
# SITIO
path('', views.indexView, name='IndexView'),
path('articulo/<str:url>/<int:id>', views.ArticuloView, name="ArticuloView"),
# SEO
path('robots.txt', views.RobotsView.as_view()),
path('BingSiteAuth.xml', TemplateView.as_view(template_name="blog/BingSiteAuth.xml", content_type="text/xml")),
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]
# MANEJO DE ERRORES HTTP
handler404 = views.Error404 # Error 404
handler500 = views.Error500 # Error 500
Здесь я оставляю код hosts.py из django-hosts:
from django.conf import settings
from django_hosts import patterns, host
host_patterns = patterns(
'',
host(r'www', settings.ROOT_URLCONF, name="www"),
host(r'blog', 'blog.urls', name="blog"),
)
Если кто-то может помочь мне, я буду благодарен вам.
Теперь я попытался удалить коды, чтобы посмотреть, исправит ли это ошибку 500 в apache2: 'handler404 = views. Error404 # Ошибка 404 handler500 = views. Error500#Ошибка 500'
И если вы их решаете. В половине случаев вы размещаете какой-то обработчикХ выбрасывает ошибку. Но всегда в url файле поддомена.