技術共有

「Django」には独自のバックエンドが付属しています

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


テーマ: スマートブルー

この記事の紹介

いいね + フォロー + 集める = 学びました

00.png

前回の記事でもお話しましたが Django 操作するMySQL このメソッドでは、モデルの作成方法と、データベースの追加、削除、変更、およびクエリの方法について説明します。ただし、データを変更するたびにコードを記述する必要があり、少々面倒です。

もっと簡単な方法はありますか?

いくつか、いくつか、Django 実はバックエンドというグラフィカルインターフェースが搭載されており、その上で様々なデータ内容を簡単に操作することができます。

次に、この組み込みバックエンドの使用方法について説明します。

バックグラウンドルーティングアドレスを設定する

実際に作成する Django プロジェクト中に、バックグラウンドでルーティング アドレスがすでに構成されています。

前回の記事を段階的に実行すると、バックグラウンド ルーティングが削除される可能性があります。それは関係ありません、ただ埋め合わせてください。

プロジェクトを開く urls.py ファイル、見つかりましたurlpatterns この変数は、バックグラウンド ルーティングを埋めるために使用されます。

```パイソン

urls.py プロジェクトのルーティング ファイル

django.urls から path をインポート blog.views から blogIndex をインポート

urlpatterns = [ # その他のルートは省略 # 以下の文はバックグラウンドを設定するためのルーティング パスです ('admin/', admin.site.urls) ] ```

設定が完了したら、プロジェクトを開始し、ブラウザで開きます。 http://127.0.0.1:8000/admin/ 背景にログインページが表示されます。

01.png

管理者アカウントを作成する

ログイン ページがある場合は、ログインするために対応するアカウントが必要です。

したがって、最初にスーパー管理アカウントを作成する必要があります。

ターミナルを開き、プロジェクト ディレクトリに入り、次のコマンドを入力してスーパー管理アカウントを作成します。

python manage.py createsuperuser

次に、端末はこの行の情報を返し、スーパー管理ユーザー名 (アカウント) を入力するように求めます。

Username (leave blank to use 'xxx'): admin

ここの「xxx」は私のコンピュータ名です。コロンの後にスーパー管理アカウントを入力できます。ここで入力したのは、 admin

ユーザー名を入力すると、引き続き電子メール アドレスの入力を求められます。

Email address: 123@qq.com

メールアドレスを入力後、パスワードを2回入力するよう求められます。

  1. Password:
  2. Password (again):

ここで入力するパスワードは 12345678、あまりにも一般的なパスワードを賢く思い出させてくれますが、私は y と入力してそのような単純なパスワードを使い続けます。

  1. This password is too common.
  2. This password is entirely numeric.
  3. Bypass password validation and create user anyway? [y/N]: y
  4. Superuser created successfully.

見る Superuser created successfully. この文は、アカウントが正常に作成されたことを意味します。

ブラウザで開くようになりました http://127.0.0.1:8000/admin/、アカウント入力 admin、パスワード入力 12345678 正常にログインできます。

02.png

モデル協会の背景

以前はコードを使用してデータベースを操作していましたが、それほど便利ではありませんでした。

Django アプリケーション モデルをバックグラウンドにバインドする方法を提供し、バックグラウンド インターフェイスでデータを直接操作できるようにします。

前回の記事から作成しました account 例として適用します。

存在する account アプリケーションで見つかりましたadmin.py ファイルに次のコードを記述します。

```パイソン

アカウント/admin.py

django.contrib から admin をインポートし、account.models から User をインポートします。

class UserAdmin(admin.ModelAdmin): # 表示内容 list_display = ['username', 'email']

User モデルを UserAdmin にバインドする

admin.site.register(ユーザー、UserAdmin) ```

まずはここで紹介する必要がある admin そしてUser、したいからです。 account アプリケーション モデルはバックエンドに関連付けられます。

というファイルを作成します UserAdmin クラス、それに書いてくださいlist_display = ['username', 'email'] 、背景ページに表示することを意味しますusername そしてemail この 2 つのフィールド。

やっと admin.site.register(User, UserAdmin) に意味User モデルとバックエンドは結合されています。

プロジェクトを実行して開きます http://127.0.0.1:8000/admin/ ログインすると、バインドしたモデルが表示されます。

03.png

「ユーザー テーブル」をクリックすると、データベース内のこのテーブルに関する情報が表示されます。

04.png

「追加」ボタンをクリックして、このテーブルに新しいデータを追加できます。

05.png

指定したデータを変更・削除することもできます。

06.png

バックグラウンド ページで変更されたデータは、データベース内のデータに直接影響します。

同様に、入れます blog アプリケーション モデルはバックエンドに関連付けられます。ここでの操作は先ほどと同じですので説明は省略します。

```パイソン

ブログ/admin.py

django.contrib から admin をインポート blog.models から Article をインポート

ここでモデルを登録してください。

class ArticleAdmin(admin.ModelAdmin): # 表示する内容 list_display = ['id', 'title']

User モデルを UserAdmin にバインドする

admin.site.register(Article, ArticleAdmin) ```

07.png

記事を作成して見てみましょう。

「記事情報テーブル」の横にある追加ボタンをクリックし、以下の内容を入力します。

08.png

クリック SAVE ボタンを押すと、データベースにデータが書き込まれ、「記事情報テーブル」の一覧ページに戻り、書き込まれたデータが表示されます。

09.png

プロジェクト全体の内容がよくわからない場合は、私がまとめたものを振り返ってください。「ジャンゴコラム」

バックエンドの基本構成

これまでの操作で、注意深い作業員であれば、インターフェイスがなぜ英語なのかなど、いくつかの問題に気づいたかもしれません。テーブル名の後に「s」が付いているのはなぜですか?記事作成時のオプションの [ユーザー] フィールドがユーザー名ではなく、なぜ入力されるのですか? User object(1)

次に、これらの問題を 1 つずつ解決していきます。

タイムゾーンと言語を設定する

プロジェクトを開く settings.py ファイル、見つかりましたLANGUAGE_CODE 、その値を次のように設定します'zh-hans' 。そして見つけますTIME_ZONE に設定しますAsia/Shanghai

```パイソン

設定.py

言語

LANGUAGE_CODE = 'zh-hans'

タイムゾーン

TIME_ZONE = 'アジア/上海' ```

10.png

列名を中国語に変更します

しかしこの時は ACCOUNT そしてBLOG まだ英語です、ここDjango これら 2 つのアプリケーションのエイリアスを設定する必要があります。

11.png

設定は各アプリケーション独自のものです apps.py ファイル、経由verbose_name 列名をカスタマイズするための変数。

による account 例として適用します。

```パイソン

アカウント/アプリ.py

django.appsからAppConfigをインポートする

クラス AccountConfig(AppConfig): デフォルト自動車フィールド = 'django.db.models.BigAutoField' 名前 = 'アカウント' 詳細名 = 'ユーザー管理' ```

blog 同じことが当てはまります。

```パイソン

ブログ/apps.py

django.appsからAppConfigをインポートする

クラス BlogConfig(AppConfig): デフォルト自動車フィールド = 'django.db.models.BigAutoField' 名前 = 'ブログ' 冗長名 = '記事管理' ```

この時点でページを更新すると、列名が変更されていることがわかります。

12.png

複数形を削除

テーブル名の後の「s」は Django この「s」を削除するには、テーブルのエイリアスも設定する必要があります。

各アプリケーションのモデル ファイル (models.py) で構成されています Meta 情報提供verbose_name_plural

による account 例として適用します。

```パイソン

アカウント/モデル.py

django.dbからモデルをインポートする

ユーザーテーブルを作成する

クラスUser(models.Model): id = models.AutoField(primarykey=True) # ユーザー名 = models.CharField('ユーザー名', maxlength=30, null=True,blank=True, unique=True) # パスワードpassword = models.CharField('password', max_length=30) # 電子メール email = models.EmailField('Email', unique=True, null= True、空白 = True)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'

```

ページを更新すると、「User Table」の後の「s」が消えていることがわかります。

13.png

blog 同じ理由。

外部キーフィールドを表示する

記事を追加するときは、記事の作成者を入力して選択する必要があります。記事テーブルの作成者はユーザー テーブルに関連付けられています。

著者を追加すると、ページには「ユーザーオブジェクト」という名前が直接表示されます。ユーザーの数が増えると、誰が誰であるかわかりません。

14.png

ユーザー名を表示する必要があります。

まずは改造してみましょう blog 表示するフィールド。

```パイソン

ブログ/admin.py

django.contrib から admin をインポート blog.models から Article をインポート

著者の取得

この obj オブジェクトは、Article インスタンスを受け取るために使用されます

def get_author(obj): obj.user.username を返す

ここでモデルを登録してください。

class ArticleAdmin(admin.ModelAdmin): # 表示されるコンテンツ # get here を使用できます author はユーザー名に置き換えられます。ここで一重引用符や括弧を追加する必要はありません。 # django はリストを使用しています表示する際、デフォルトでパラメータがメソッドに渡されます。 リスト表示 = ['id', 取得[著者、タイトル、内容]

得る著者.ショート説明 = '著者'

User モデルを UserAdmin にバインドする

admin.site.register(Article, ArticleAdmin) ```

外部キーを get_author メソッドに関連付ける username フィールドが表示されます。

15.png

この時点で、この記事の著者が誰であるかがわかります。ただし、編集ページにユーザー名を表示する必要もあります。

現時点で修正が必要です User モデルだけで十分です。

```パイソン

アカウント/モデル.py

django.dbからモデルをインポートする

ユーザーテーブルを作成する

クラスUser(models.Model): id = models.AutoField(primarykey=True) # ユーザー名 = models.CharField('ユーザー名', maxlength=30, null=True,blank=True, unique=True) # パスワードpassword = models.CharField('password', max_length=30) # 電子メール email = models.EmailField('Email', unique=True, null= True、空白 = True)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'
  7. # 返回用户名
  8. def __str__(self):
  9. return self.username

```

存在する account/models.py 最後に追加__str__ メソッド、リターンusername

このとき、ユーザー名は記事情報の編集ページで確認できます。

16.png

カスタム編集可能なジャンプ リンク

記事管理ページでは、記事を編集したい場合、「ID」欄をクリックするだけで編集ページにジャンプします。他のフィールドをクリックして編集ページにジャンプしたい場合は、手動で設定する必要があります。 blog/admin.py たとえば、「TITLE」をクリックして編集ページにジャンプしたいとします。

17.png

```パイソン

ブログ/admin.py

一部のコードを省略します

class ArticleAdmin(admin.ModelAdmin): # 表示するコンテンツのリスト表示 = ['id', 取得author, 'title', 'content'] # ジャンプ可能なフィールドのリスト画面links = ['id', 'title'] # 一部のコードを省略します```

私はここにいます ArticleAdmin に追加されましたlist_display_links = ['id', 'title']、クリックを示します id そしてtitle 編集ページにジャンプできます。

読み取り専用属性

コンテンツを編集するとき、一部のフィールドを変更できないようにする必要があります。たとえば、ブログ ID は変更できません。

許容できる blog/admin.py 加えるreadonly_fields 変更できないフィールドを指定します。

```パイソン

ブログ/admin.py

一部のコードを省略します

class ArticleAdmin(admin.ModelAdmin): # 読み取り専用属性 readonly_fields = ['id'] # 一部のコードを省略します````

この時点で編集する場合、id フィールドの値は変更できません。

18.png


この記事は以上です。次回は、トップページのデータベースに情報を読み込む方法を紹介します。

画像を拡大

いいね + フォロー + 集める = 学びました