2010-11-28 19 views
4

の必要な変更がflatpagesに狂ってしまいました。その後、私はフラットページ/ about /を作成します。しかし、私がhttp://localhost:8000/about/を実行しているときには、がNo FlatPages matches the given queryにレンダリングされます。私にdefault.htmlあなたがnamed groupsにビットを読みたいかもしれないように見えますproject/templates/flatpages/default.html.フラットページは指定されたクエリと一致しません

urls.py

urlpatterns = patterns('', 
    (r'^admin/', include(admin.site.urls)), 
    (r'^(?P<url>about/)$', 'django.contrib.flatpages.views.flatpage'), 
) 

settings.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
     #'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',                         
) 

INSTALLED_APPS = (
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.admin', 
    'django.contrib.flatpages',) 
+0

あなたのurls.pyとsettings.pyの関連ビットを質問に追加してください。私たちのほとんどは熟達した読者ではありません; ^) – istruble

+1

@aoondey、同じ問題を抱えている回答を得ました – Mulagala

答えて

5

です。

しかし、今の代わりに、あなたのurls.pyでこれを入れてみてくださいため:

# last entry in urls.py. letting flatpages handle found pages or throw 404's 
(r'', include('django.contrib.flatpages.urls')), 

をちょうど私達が適切なURLをリンクしているを確認しますこと。次に、FlapPageオブジェクトの作成方法を見てみましょう。/adminを使用すると最も簡単ですが、シェルを使用することもできます。これらを手作業で作成するときのトリックは、サイトを追加することです。

オプションで、既存のFlatPageオブジェクトを使用できます。それがサイトに関連付けられていることを確認してください。

> about = FlatPage.objects.get(url="/about/") 
> about.sites.all() 
[] 
> # Empty list of sites. This will give you a 'No FlatPage matches' 404. 
> about.sites.add(1) 

ここでサーバーを起動して、どのように動くかを確認します。 flatpages/default.htmlテンプレートを作成していない場合は、TemplateDoesNotExist例外が発生します。

+0

。同じエラー – aoondey

+0

に、URLが配線されていることを確認してから試してみることができます。 – istruble

1

サイトアプリケーションでサイトを変更(新規追加)した場合、新しく追加されたサイトと一致する値でsettings.pyのSITE_IDを変更する必要があります。

0

site_id = 1を使用する場合にのみ何らかの理由で動作します。

0

これはしばらくの間壁を運転しましたが、あなたが立ち往生したものかもしれません。管理サイトでページを定義すると、サイトの名前の後に/を含めないと404が表示されます。

ie。 URL:/ first-page/vs/first-page

最初のバージョンは動作し、2番目のバージョンは404となります。そうでない場合は、私に迷惑をかけていた同じ問題に悩まされているかもしれない他の人々のためにこれを投稿するだけです。

2

提供ソリューションのほとんどに従った後、あなたはそれを考慮しなければならない最も重要な要因は、Djangoのドキュメントに示されていないが、そのSITE_IDの= 1 Djangoはサイトの管理パネルに提供し、デフォルトで

、「ありますexample.com "フラットページを追加するときには、自分のサイトを追加する傾向があります。ほとんどのチュートリアルでは、settings.pyにSITE_ID = 1を使用するよう指示します。

「example.com」サイトがデフォルトで1であることを教えてください。「example.com」サイトを127.0.0.1:8000に編集してください。

も url.pyに

# last entry in urls.py. 

(R '' が含まれる( 'django.contrib.flatpagesを追加することを忘れないでください。これは、あなたがフラットページに1行をすでに作成したと仮定したURL))、

settings.py`

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware' 

INSTALLED_APPS = (
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.flatpages', 

0

。 Django Unleashed 2016章に従ってください。どうやら、すでにサイト内に行があります(これは移行中にカーテンの裏にあるようです)。しかし、FlatPageでサイトオブジェクトを作成してから、そのFlatPageのサイトフィールドに「 」を追加する必要があります。

from django.contrib.flatpages.models import FlatPage, Site 
fp=FlatPage.objects.get(pk=1) 
our_site=Site.objects.all()[0] 
fp.sites.add(our_site) 
fp.save() 
関連する問題