0

私はdjangoにかなり慣れていません。

解決しなければならない問題が 1 つあります。

私のウェブサイトには、管理パネルによって管理されるコンテンツ (静的テキスト) を配置したい場所がいくつかあります。django flatpage や django-chunk のようなプロジェクトがあることは知っています。Flatpage にはいくつかのフィールドしかなく、django-chunk にはすべて 1 つの場所 (キーと値) があります。

ユーザーがいくつかのテキストフィールドに入力できる編集ビューのみで、パネル管理者の新しい位置に追加したいと思います。セーブデータはファイル(またはデータベース)に保存されます。

一般的に、電話番号、住所、いくつかのページにあるキャッチフレーズなどの小さなテキストを保存したいと思います。また、完全な CRUD でモデルを作成する必要はありません。

これどうやってするの?出来ますか?

4

1 に答える 1

0

モデルの作成は不要だとおっしゃっていますが、その理由はありません。正しい道だと思います。

class Snippet(models.Model):
    name = models.CharField(max_length=24)
    body = models.TextField()

管理者に登録し、必要な数のスニペットを作成します。ユーザーが指定した権限のみを編集できるようにする場合は、追加と削除の権限を無効にすることができます。

それらをテンプレート コンテキストに追加します。

def get_context_data(self, request, *args, **kwargs):
    data = super(MyView, self).get_context_data(request, *args, **kwargs)
    data['snippet1'] = Snippet.objects.get(name='snippet1').body
    data['snippet2'] = Snippet.objects.get(name='snippet2').body
    return data

次に、それらをテンプレートに印刷します。

...
Contact us at {{ snippet1 }}!
...

これは少し単純化されています。名前の宣言的なリストに基づいて必要なすべてのスニペットを追加するビュー mixin が必要な場合があります。クエリを最適化して、リクエストごとにループしてデータベースに 10 回ヒットしないようにする必要がありますが、これは良いスタートです。簡単な解決策に。

于 2012-10-11T17:41:59.943 に答える