私は Django チュートリアルを進めており、パート 5: テストに取り組んでいます。DetailView および ListView の「ショートカット」ビューを使用して (チュートリアルで提案されているように) コードを除外するという問題に遭遇しましたが、404 ページが表示されると、代わりに 200 ステータス コードが返されます。私は何か間違ったことをしていますか?チュートリアルによると、ステータス コードは 404 である必要があります。
ありがとう!
私は Django チュートリアルを進めており、パート 5: テストに取り組んでいます。DetailView および ListView の「ショートカット」ビューを使用して (チュートリアルで提案されているように) コードを除外するという問題に遭遇しましたが、404 ページが表示されると、代わりに 200 ステータス コードが返されます。私は何か間違ったことをしていますか?チュートリアルによると、ステータス コードは 404 である必要があります。
ありがとう!
404 ステータスを持つように Http ヘッダーを定義する必要があります。
return HttpResponse(content=template.render(context), content_type='text/html; charset=utf-8', status=404)
現在のページが 404 であることを検索エンジンに知らせることが重要です。スパマーは、ユーザーをどこかに誘導するように見える多数の URL を作成することがありますが、別のコンテンツを提供します。多くの場合、多くの異なるアドレスがほぼ同じコンテンツを提供します. また、ユーザー フレンドリーではないため、ほとんどの SEO ガイドラインでペナルティが課せられています。そのため、同じ疑似 404 コンテンツを示すアドレスが多数ある場合、検索 Web サイトのクロール システムに適切に表示されない可能性があります。そのため、カスタム 404 として提供しているページが 404 ステータスであることを確認する必要があります。
カスタム 404 ページを作成しようとしている場合は、次の方法をお勧めします。
アプリケーションの urls.py に次を追加します。
# 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
アプリケーションの views.py に次を追加します。
# 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)
シークレットは最後の行にあります: status=404
それが役に立ったことを願っています!
このアプローチに対するコミュニティの意見を楽しみにしています。=)
あなたはできる
return HttpResponseNotFound(render_to_string('404.html'))
代わりは。