In aggiunta alla risposta precedente, è importante dire che views.py deve restituire un HttpResponse con uno stato 404 nell'intestazione http. È importante informare i motori di ricerca che la pagina corrente è un 404. Gli spammer a volte creano molti URL che potrebbero portarti in qualche posto, ma poi ti offrono un altro contenuto. Spesso fanno molti indirizzi diversi che ti servono quasi esattamente lo stesso contenuto. E poiché non è facile da usare, la maggior parte delle linee guida SEO lo penalizzano. Quindi, se hai molti indirizzi che mostrano lo stesso contenuto di pseudo-404, non potrebbe apparire bello per i sistemi di scansione dai siti web di ricerca. Per questo motivo si desidera assicurarsi che la pagina che si sta utilizzando come una 404 personalizzata abbia uno stato 404. Così qui è un buon modo per andare:
Into urls.py aggiuntivo dell'applicazione:
# Imports
from django.conf.urls.static import static
from django.conf.urls import handler404
from django.conf.urls import patterns, include, url
from yourapplication import views
##
# Handles the URLS calls
urlpatterns = patterns('',
# url(r'^$', include('app.homepage.urls')),
)
handler404 = views.error404
Into views.py aggiuntivo dell'applicazione:
# Imports
from django.shortcuts import render
from django.http import HttpResponse
from django.template import Context, loader
##
# Handle 404 Errors
# @param request WSGIRequest list with all HTTP Request
def error404(request):
# 1. Load models for this view
#from idgsupply.models import My404Method
# 2. Generate Content for this view
template = loader.get_template('404.htm')
context = Context({
'message': 'All: %s' % request,
})
# 3. Return Template for this view + Data
return HttpResponse(content=template.render(context), content_type='text/html; charset=utf-8', status=404)
Il segreto è in ultima line: status = 404
Spero che abbia aiutato!
Non vedo l'ora di vedere gli input della comunità a questo approccio. =)
fonte
2013-04-26 13:55:19
Viene visualizzato "impossibile importare le viste dei nomi" durante la scrittura "da viste di importazione app1" in "views.py". Il nome della mia app è "app1" – Timo
urls.py dell'applicazione significa: Se si dispone di un progetto 'sito Web' e di un'app' blog'. Quindi dovresti aggiungere 'handler404' in 'website.urls.py' not' blog.urls.py' –