Django 開発: 仮想環境とプロジェクトの構築、データ テーブルの構築

タスク 1: 仮想環境とプロジェクトを構築し、データ テーブルを構築する

1. Django プロジェクトを作成し、指定したディレクトリに空のフォルダーを作成しますMy_Django

2. 次に、Anaconda Prompt で仮想環境を作成します。ここでは名前を付けました。django

3. まず、新しく作成した仮想環境をアクティブ化します。

`conda activate django`

次に、現在の仮想環境djangoに django などの必要なパッケージをインストールします。
pip install django
pip install djangorestframework
pip install django-filter
pip install drf_spectacular

4. Anaconda Prompt の作業ディレクトリをMy_Djangoフォルダーに切り替え、プロジェクトを作成します

(base) C:\Users\Rongyao>conda activate django

(django) C:\Users\Rongyao>cd ..

(django) C:\Users>cd ..

(django) C:\>d:

(django) D:\>cd D:\常用文件\CQU\就业\深度学习\Datawhale\2023-8\Django4.2\My_Django

(django) D:\常用文件\CQU\就业\深度学习\Datawhale\2023-8\Django4.2\My_Django>django-admin startproject My_Django

(django) D:\常用文件\CQU\就业\深度学习\Datawhale\2023-8\Django4.2\My_Django>

を実行するとdjango-admin startproject My_Django、 My_Django の下に追加のフォルダーが作成され、My_Djangoその追加のMy_Djangoフォルダーの下にMy_Djangomanage.py が作成され、操作が成功したことがわかります。
画像の説明を追加してください

5. アプリの作成

まずパスを追加の My_Django フォルダーに切り替えて、cd My_Django
ウィンドウ内で実行を続けます。python manage.py startapp myApp
この時点で、追加の myApp フォルダーが表示され、操作が成功したことが示されます。
画像の説明を追加してください

注: コーディング エラーが発生する可能性があるため、manage.py へのパスに中国語を含めないでください。

6.setting.pyファイルを設定します

My_Django フォルダーで settings.py を見つけます。
画像の説明を追加してください

開いて独自のアプリ名を INSTALLED_APPS に追加し、新しくインストールされたライブラリを追加します。

    'rest_framework',
    'django_filters',
    'drf_spectacular',

画像の説明を追加してください

7. プロジェクトを開始する

运行项目先执行数据库相关操作,再启动 django 项目
 ```bash
    # 先执行数据库迁移相关操作
    python manage.py makemigrations
    python manage.py migrate
    # 启动 django 项目
    python manage.py runserver
    ```
启动之后,复制如下链接去浏览器打开

画像の説明を追加してください

看到下面这样的界面,就说明成功启动了!!!

画像の説明を追加してください

8. Django-Build データテーブルの例 (データベースのマージ)

myApp フォルダーで、model.py ファイルを見つけます。
画像の説明を追加してください

コンテンツを開いて追加します。

## 产品分类表
class GoodsCategory(Model):
    """产品分类"""

    name = CharField(max_length=64,verbose_name='分类名称')
    remark = CharField(max_length=64,null=True,verbose_name='备注',blank=True)


## 产品表
class Goods(Model):
    """产品"""
    
    # 外键
    category = ForeignKey(GoodsCategory, on_delete=SET_NULL,related_name='goods_set',null=True,verbose_name='产品分类',blank=True,)
    # on_delete 


    number = CharField(max_length=32,verbose_name='产品编号')
    name = CharField(max_length=64,verbose_name='产品名称')
    barcode = CharField(max_length=32,null=True,blank=True,verbose_name='条码')
    spec = CharField(max_length=64,null=True,blank=True,verbose_name='规格')
    shelf_life_days = IntegerField(null=True, verbose_name='保质期天数')
    purchase_price = FloatField(default=0, verbose_name='采购价')
    retail_price = FloatField(default=0, verbose_name='零售价')
    remark = CharField(max_length=128, null=True, blank=True, verbose_name='备注')



"""
CharField:用于存储字符串类型,有最大长度限制
IntegerField:用于存储整数类型
FloatField:用于存储浮点数类型
BooleanField:用于存储布尔类型
DateField:用于存储日期类型
DateTimeField:用于存储日期和时间类型
ImageField:用于存储图片类型
FileField:用于存储文件类型
ForeignKey:外键 用于表示数据库表之间的关联关系
OneToOneField:一对一 用于表示一对一的关联关系
ManyToManyField:多对多 用于表示多对多的关联关系


max_length:字段的最大长度限制,可以应用于多种不同的字段类型。
verbose_name:字段的友好名称,便于在管理员后台可视化操作时使用。
default:指定字段的默认值。
null:指定字段是否可以为空。null=True 设置允许该字段为 NULL 值
blank:指定在表单中输入时是否可以为空白。
choices:用于指定字段的可选值枚举列表。
related_name:指定在多对多等关系中反向使用的名称。
on_delete:指定如果外键关联的对象被删除时应该采取什么操作。
"""

次に、保存して終了し、次のコマンドを再実行します。
python manage.py makemigrations
python manage.py migrate

これら 2 つのコマンドは Django フレームワークの主要なコマンドであり、データベースの移行に使用されます。Django モデルを変更した後、これら 2 つのコマンドを実行して変更をデータベースに適用する必要があります。

  1. python manage.py makemigrations: このコマンドは、移行スクリプトを生成するために使用されます。モデル ファイルを更新した後、このコマンドを実行する必要があります。Django はモデルの変更を検出し、対応する移行スクリプトを自動的に生成し、ディレクトリに保存しますmigrations/一般に、このコマンドはアプリケーションごとに 1 回実行する必要があります。
  2. python manage.py migrate: このコマンドは、移行スクリプトをデータベースに適用するために使用されます。makemigrationsモデル ファイルに変更を加えた後、コマンドを使用して移行スクリプトを生成し、コマンドを実行してこれらのスクリプトをデータベースに適用する必要があります。新しい移行スクリプトの場合、Django はそれらを 1 つずつ実行し、データベース構造を更新します。すでに実行されているスクリプトの場合、Django は繰り返しの実行を避けるためにそれらをスキップします。

これら 2 つのコマンドは、Django フレームワークにおいて非常に重要なコマンドであるため、データベース関連のコンテンツを変更するときは、常にこれらのコマンドを明確に使用することを忘れないでください。

ジャンゴプロジェクトを再起動します
python manage.py runserver

おすすめ

転載: blog.csdn.net/qq_42859625/article/details/132309863