1122ジャンゴフィールド属性のデータ操作はORM

1.静的な設定ファイル

1.デフォルトではすべてのHTMLファイルをテンプレートフォルダに配置されています

2.静的ファイルとは何ですか

网站所使用到的提前写的css  js 第三方的前端模块,图片都叫做静态资源

サイトのために使用される静的リソースファイルはすべてデフォルトでは静的フォルダ3になります

手动创建static文件夹,根据静态资源分别创建子文件夹:
    通常情况下,在static文件夹内还会再见其他文件夹:

    css     文件夹
    js      文件夹
    font    文件夹
    img     文件夹
    Bootstrap
    fontawesome(图标库)
为了更加方便的管理文件

django中 需要你自己手动创建静态文件存放的文件夹
  • ビュー機能は、戻り値を持っている必要があり、戻り値は、オブジェクトのHttpResponseをしています
  • URL、ユーザーに適切なリソースへのアクセスをブラウザに入力し、前提は、バックエンドのリソースアクセスインターフェース、バックエンドの事前に設定されているが表示された404を提供していませんでした

IMG

リソースの手動の静的ファイルへのアクセス

  • あなたはバックエンドリソースを公開したい場合はジャンゴバックエンド、urlは、対応するリソース・インターフェースを開くには、内部に行かなければなりません

    引入bootstrap时会报404找不到,需要去后端中配置
    settings文件中,最下面手动开设静态文件访问资源,手动添加以下代码
    
    # 将static文件里的所有资源都暴露给用户
    STATICFILES_DIRS = [
      os.path.join(BASE_DIR,'static')
    ]
STATIC_URL = '/static/'  # 访问静态文件资源接口前缀  通常情况下接口前缀的名字也叫static   (接口前缀叫什么,配置文件中也需要使用什么)

# 手动开设静态文件访问资源
STATICFILES_DIRS = [  # 静态资源所在的文件夹路径
    os.path.join(BASE_DIR,'static'),  # 将static文件里面所有的资源暴露给用户
    os.path.join(BASE_DIR,'static1'),  # 将static文件里面所有的资源暴露给用户
]
接口前缀会向STATICFILES_DIRS文件路径中查找路径文件夹,自上而下

IMG

動的な静的ファイルを結合

{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
  • ヒント:地区が使用するブラウザのキャッシュをクリアページ

    浏览器检查 -- settings -- Network -- Disable cache(禁止缓存)

    IMG

2.request方法

2.1リクエストメソッド

  • デフォルトでは、リクエストフォームフォームを取得することです

    フォームにフォームmethod = 'post'、ポスト要求

    get请求也能携带参数,在url? 后面
    1.携带的数据不安全
    2.携带的数据大小会有限制
    3.通常只会携带一些不是很重要的数据
  • アクション=「」

    1.不写 默认朝当前地址提交
    2.只写后缀 /index
    3.写全路径 https://www.baidu.com
  • 私たちは、後端に向けて早期のポスト出現要求を提出したforbidden(403)場合は、設定ファイルの内容の行をコメントアウトする必要があります

    # 中间件
    MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
  • リアビュー機能を処理Djangoのデフォルトは、GETリクエストGETリクエストやリクエストがポストビュー機能を行っているかどうかの判断がなされています

    def login(request):
        print('来啦 老弟~')
        return render(request,'login.html')
    
get请求指向拿到login页面
post请求想提交数据  然后后端做校验 

2.2 Getリクエストメソッドのフロントエンド

現在のモード要求を確認する方法

request.method

request.method 拿到的是字符串大写的请求方式 GET POST

def login(request):
    # if request.method == 'GET':
    #     print('来啦 老弟~')
    #     print(request.method,type(request.method))  # 获取前端请求方式
    #     return render(request,'login.html')
    # elif request.method == 'POST':
    #     print('post业务逻辑')
    #     return HttpResponse('收到了')
    if request.method == "POST":
        return HttpResponse('收到了')
    return render(request,'login.html')

2.3リクエストメソッド

ユーザーのポストが提出したデータを取得する方法、データの後端のフロントエンドは、文字列型を取得するために変更されています

request.method

获取请求方式  并且纯大写的字符串

request.POST

获取用户提交的post请求数据
如何获取用户数据(******)
request.POST.get()  # 默认只会获取列表最后一个元素
request.POST.getlist()  # 如果你想获取列表 用getlist()

request.GET

获取用户提交的get请求数据
request.GET.get()  # 默认只会获取列表最后一个元素request.GET.getlist()  # 如果你想获取列表 用getlist()   

.getメソッド

request.get方法默认只取列表的最后一个元素,
如果直接获取列表,使用get.list

MySQLへの接続3. pycharm

プラグインをインストールします。

IMG

接続したら、確認のために適用されます。

以下:

IMG

4.ジャンゴのMySQLデータベース接続

二つのステップがなければなりません

4.1。プロファイルの設定

鍵データベースを追加するための設定を設定ファイル

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 指定数据库类型
        'NAME': 'day49',  # 指定库的名字
        
        'USER':'root',  # 注意 键必须是全大写
        'PASSWORD':'',
        'HOST':'127.0.0.1',
        'PORT':3306,
        'CHARSET':'utf8'
    }
}

4.2。データベース接続モジュールを指定します。

ジャンゴ伝えるためのイニシアチブを取ることが、デフォルトのMySQLdbとpymysql接続してはいけません

  • あなたはできる名前をプロジェクト__init__.py書き込み
  • また、中にアプリケーション名__init__.py書き込み
import pymysql   
pymysql.install_as_MySQLdb()

5.djangoのORMのプロフィール

5.1基本概念

1. ORMオブジェクトリレーショナルマッピング

类               表对象         
数据对象点属性     字段对应的值

2.なぜORM

能够让不会数据库操作的人也能够简单方便去操作数据库

3.欠点

封装程度太高  有时候会出现查询效率偏低的问题
所以工作中
    简单的用orm
    复杂的 追速度 需要你手动书写sql语句

ORM操作ジャンゴ5.2

书写模型类
去应用下的models.py中书写模型类(就是类)
  • データベースに対応するであろうジャンゴ・ジャンゴプロジェクトを書く時間後
  • 状況は(******)同じデータを使用して複数のプロジェクトを表示されません。
  • あなたはDjangoが主キーとしてidフィールドを呼び出したときに、主キーが自動的に作成された指定しない場合には
  • 彼らは作成した場合、Djangoは作成されません。
  • デフォルトのchar型のフィールドをジャンゴませんが、サポートは、ユーザー定義

1.データベース・マイグレーション(同期)コマンド

ORMのフィールドを作成した後、同期コマンドを実行する必要があります

1.python3 manage.py makemigrations

记录操作: 将数据库的修改 记录到小本本上(migrations文件内)

2.python3 manage.py移行

操作执行: 将修改操作真正的同步到数据库中
  • 上記のコマンドが同時に発生しなければなりません
  • ちょうどあなたが再実行上記の二つのコマンドに持っているデータベースに関連付けられたコードの中のモデルを修正

あなたは、テーブルを作成した後

IMG

表2.クラスの欠失モデルチェンジの検索フィールド

フィールドを変更します。

直接修改代码,然后执行数据库迁移命令即可

フィールドを追加します。

models.IntegerField()   执行迁移命令
注意设置默认值
    # 方式1  设置默认值
        email = models.EmailField(default='[email protected]')  # varchar
    # 方式2   允许字段为空
        phone = models.BigIntegerField(null=True)
    # 直接在提示中给默认值
        gender = models.CharField(max_length=32)

IMG

削除フィールド

直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)

3. CRUDモデルテーブルデータ

クエリデータ.filter()

data = models.User.objects.filter(username=username)  

print(data)     # <QuerySet [<User: User object>]>
  • 結果フィルタは、実際のデータオブジェクトである「リスト」を返します
  • あなたは括弧ファイラー内に複数のキーワードパラメータを置くことができたクエリパラメータで複数のキーワードの関係であり、

すべてのデータのクエリ.all() *

user_list = models.User.objects.all()  # models.User.objects.filter()

"""
结果是一个"列表" 里面是一个个的数据对象
"""

サポートインデックス値が、推奨.first()メソッド値

支持切片,但不支持负数

増加したデータ.create()

戻り値を返します。作成方法は、それ自体が作成されたオブジェクトの現在の値であります

user_obj = models.User.objects.create(username=username,password=password)
print(user_obj,user_obj.username,user_obj.password)

変更データ.update()

.filter().update()

models.User.objects.filter(id=edit_id).update(username=username,password=password)
        """
        批量操作  会将filter查询出来的列表中所有的对象全部更新
        """

データを削除.filter().delete()

バッチ操作は、すべてのオブジェクトを削除し、すべてのリストのチェックアウトをフィルタリングします

models.User.objects.filter(id=delete_id).delete()
"""
批量操作  会将filter查询出来的列表中所有的对象全部删除
"""

概要

  1. アプリの必要性を作成すると、アプリの設定で登録します
INSTALLED_APPS
    'app01'
  1. 三銃士
    1. フロントページをレンダリング
    2. HttpResponse()文字列をコミット
    3. リダイレクト()リダイレクション
  2. アプリを作成する際にテンプレートでパス設定を追加する必要がCMD
'DIRS': [os.path.join(BASE_DIR, 'templates')]
  1. デフォルトでは、すべてのHTMLファイルをテンプレートフォルダに配置されています

  2. 静的ファイル:事前CSS、JS、サードパーティ製のモジュールで書かれたウェブサイトは、画像が静的ファイルと呼ばれます

  3. 再度、別のサブディレクトリストアのニーズに基づいて、フォルダ内のすべてのデフォルトの静的フォルダを使用するには、サイト上の静的ファイル、

  4. 手動でフォルダへのブートストラップするために、静的なフォルダを作成し、インポート

  5. オープンインタフェース、静的リソースファイルのインポート、下の設定は、手動追加しますSTATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]

  6. 静的、動的バインディングファイル

    {% load static %}
    <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
    <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script>
    
  7. フォームのデータ送信フォームのポストを変更

  8. リクエストの早期提出がポスト403の後端部に向かって表示され、必要性は、データの行に登録した設定ファイルに移動します

    MIDDLEWARE
    
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    
  9. .method(POSTまたはGET大文字)要求モードを得る方法

  10. ジャンゴ実施形態MySQL設定接続

    settings中DATABASES中添加连接端口
    'ENGINE': 'django.db.backends.mysql',更改
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'day50',    # 指定库的名字
            'USER':'root',      # 注意键全大写
            'PASSWORD':'',
            'HOST':'127.0.0.1',
            'PORT':3306,
            'CHARSET':'utf8'
        }
    }
    

    変更リンクライブラリ

    在项目名中的__init__中添加
    应用名中的__init__中添加
        import pymysql
        pymysql.install_as_MySQLdb()
    
  11. データベースの移行命令

    python manage.py makemigrations # 记录操作
    
    python manage.py migrate        # 操作保存
    
  12. コード限りが銃弾に関連するデータベースでモデルを変更したとして、あなたは2つのコマンドを再実行しなければなりません

  13. パラメータのMAX_LENGTHを指定する必要がありますCharFieldですフィールド

  14. 新しいフィールドセットのデフォルト値

    1. タグセットデフォルト=
    2. デフォルトは空の場合はnull =真であること
    3. デフォルト値が与えられた後の入力から選択され

おすすめ

転載: www.cnblogs.com/fwzzz/p/11925103.html