2015-07-21 2 views
0

Как перенаправить пользователя на мою страницу 404.html, если он ошибается?Перенаправление на пользовательскую страницу 404 html в DjangoCMS

views.py:

from django.shortcuts import render, render_to_response, redirect 
from django.template import RequestContext 

import threading 

def url_redirect(request): 
    return render_to_response('blog.html', RequestContext(request)) 

def post_redirect(request): 
    return render_to_response('post.html', RequestContext(request)) 

def privacy_redirect(request): 
    return render_to_response('privacy.html', RequestContext(request)) 

def terms_conditions_redirect(request): 
    return render_to_response('terms.html', RequestContext(request)) 

def page_404(request): 
    return render_to_response('404.html', RequestContext(request)) 

urls.py:

from __future__ import print_function 
from cms.sitemaps import CMSSitemap 
from django.conf.urls import * 
from django.conf.urls.i18n import i18n_patterns 
from django.contrib.staticfiles.urls import staticfiles_urlpatterns 
from django.contrib import admin 
from django.conf import settings 
from django.conf.urls import patterns 

admin.autodiscover() 

urlpatterns = i18n_patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': {'cmspages': CMSSitemap}}), 
    url(r'^select2/', include('django_select2.urls')), 

    url(r'^blog', "website.views.url_redirect", name="url-redirect"), 
    url(r'^post', "website.views.post_redirect", name="post-redirect"), 
    url(r'^privacy', "website.views.privacy_redirect", name="privacy-redirect"), 
    url(r'^terms', "website.views.terms_conditions_redirect", name="terms_conditions-redirect"), 
    url(r'^404', "website.views.page_404", name="page_404"), 
    url(r'^', include('cms.urls')), 
) 

# This is only needed when using runserver. 
if settings.DEBUG: 
    urlpatterns = patterns('', 
     url(r'^media/(?P<path>.*)$', 'django.views.static.serve', 
      {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 
     ) + staticfiles_urlpatterns() + urlpatterns 

У меня также есть TEMPLATE_DEBUG = True и DEBUG = False в моем settings.py файле. Любая помощь, пожалуйста?

Кроме того, можете ли вы, ребята, сказать, подходят ли эти методы от views.py, или если они могут быть переписаны лучше?

Благодаря

ответ

3

добавить 404.html вблизи base.html (основные шаблоны папок) и когда возникает ошибка 404, сам Джанго принять вашу страницу 404

в settings.py

DEBUG = False 

TEMPLATE_DEBUG = True 

ALLOWED_HOSTS = ['yourweb.com'] 
+0

Спасибо. Это сработало. Но URL-адрес не изменяется на 'mysite/en/404.html'. Вместо этого он просто добавляет путь с моей модификацией. Есть идеи ? –

+0

404s никогда не следует перенаправлять, но просто заявляйте, что ничего не найдено, вот и все ... вы принесете свои усилия SEO, если будете перенаправлять ... – benzkji