0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Django】FlatPageのNo FlatPage matches the given queryを解決する

Posted at

FlatPageとは?

更新頻度が低い、プライバシー・ポリシーや規約関連のページに使用します。

URLやタイトル、概要をデータベースに保存するので、管理画面で更新できるようになります。

DjangoのCMS、wagtailなどを導入していたら不要かな??

実装

  1. INSTALLED_APPSを追加
  2. SITE_IDを追加
  3. URLconfを追加
  4. migrate
  5. htmlの設置

この5ステップだけでOKです。

1. INSTALLED_APPS

sitesflatpagesを追加

settings.py
INSTALLED_APPS = [
    ...
    'django.contrib.sites',
    'django.contrib.flatpages',
]

2. SITE_ID

管理画面のsiteにexample.comがあると思うの127.0.0.1:8000に変更しておきます。

127.0.0.1:8000を変更せず追加にすると「No FlatPage matches the given query」が発生します。

追加したい場合は、SITE_IDを「2」に設定するとエラーは無くなるはずです。

settings.py
SITE_ID = 1

3. URLconf

以下のようにpathを設定すると、pages/設定したpathというアドレスになります。

path、タイトル、概要などは管理画面で設定できます。

urls.py
urlpatterns = [
    ...
    path('pages/', include('django.contrib.flatpages.urls')),
]

4. migrate

migarteを実行すると、django_flatpagedjango_flatpage_sitesのテーブルが作成されます。

5. HTMLファイル

初期状態だと、flatpagesはflatpages/default.htmlをレンダリングします。

現在使用しているtemplatesフォルダ内にflatpages/default.htmlを作成します。

flatpages/default.html
<!DOCTYPE html>
<html>
<head>
  <title>{{ flatpage.title }}</title>
</head>
<body>
  <h1>{{ flatpage.title }}</h1>
  {{ flatpage.content }}
</body>
</html>

これで完了!

細かくhtmlファイルを設定したり、独自のフォームを作成することも可能です。

詳しくは公式ページをどうぞ!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?