1.静的な設定ファイル
1.デフォルトではすべてのHTMLファイルをテンプレートフォルダに配置されています
2.静的ファイルとは何ですか
网站所使用到的提前写的css js 第三方的前端模块,图片都叫做静态资源
サイトのために使用される静的リソースファイルはすべてデフォルトでは静的フォルダ3になります
手动创建static文件夹,根据静态资源分别创建子文件夹:
通常情况下,在static文件夹内还会再见其他文件夹:
css 文件夹
js 文件夹
font 文件夹
img 文件夹
Bootstrap
fontawesome(图标库)
为了更加方便的管理文件
django中 需要你自己手动创建静态文件存放的文件夹
- ビュー機能は、戻り値を持っている必要があり、戻り値は、オブジェクトのHttpResponseをしています
- URL、ユーザーに適切なリソースへのアクセスをブラウザに入力し、前提は、バックエンドのリソースアクセスインターフェース、バックエンドの事前に設定されているが表示された404を提供していませんでした
リソースの手動の静的ファイルへのアクセス
あなたはバックエンドリソースを公開したい場合はジャンゴバックエンド、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文件路径中查找路径文件夹,自上而下
動的な静的ファイルを結合
{% 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(禁止缓存)
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
プラグインをインストールします。
接続したら、確認のために適用されます。
以下:
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移行
操作执行: 将修改操作真正的同步到数据库中
- 上記のコマンドが同時に発生しなければなりません
- ちょうどあなたが再実行上記の二つのコマンドに持っているデータベースに関連付けられたコードの中のモデルを修正
あなたは、テーブルを作成した後
表2.クラスの欠失モデルチェンジの検索フィールド
フィールドを変更します。
直接修改代码,然后执行数据库迁移命令即可
フィールドを追加します。
models.IntegerField() 执行迁移命令
注意设置默认值
# 方式1 设置默认值
email = models.EmailField(default='[email protected]') # varchar
# 方式2 允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender = models.CharField(max_length=32)
削除フィールド
直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)
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查询出来的列表中所有的对象全部删除
"""
概要
- アプリの必要性を作成すると、アプリの設定で登録します
INSTALLED_APPS
'app01'
- 三銃士
- フロントページをレンダリング
- HttpResponse()文字列をコミット
- リダイレクト()リダイレクション
- アプリを作成する際にテンプレートでパス設定を追加する必要がCMD
'DIRS': [os.path.join(BASE_DIR, 'templates')]
デフォルトでは、すべてのHTMLファイルをテンプレートフォルダに配置されています
静的ファイル:事前CSS、JS、サードパーティ製のモジュールで書かれたウェブサイトは、画像が静的ファイルと呼ばれます
再度、別のサブディレクトリストアのニーズに基づいて、フォルダ内のすべてのデフォルトの静的フォルダを使用するには、サイト上の静的ファイル、
手動でフォルダへのブートストラップするために、静的なフォルダを作成し、インポート
オープンインタフェース、静的リソースファイルのインポート、下の設定は、手動追加します
STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ]
静的、動的バインディングファイル
{% 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>
フォームのデータ送信フォームのポストを変更
リクエストの早期提出がポスト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', ]
.method
(POSTまたはGET大文字)要求モードを得る方法ジャンゴ実施形態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()
データベースの移行命令
python manage.py makemigrations # 记录操作 python manage.py migrate # 操作保存
コード限りが銃弾に関連するデータベースでモデルを変更したとして、あなたは2つのコマンドを再実行しなければなりません
パラメータのMAX_LENGTHを指定する必要がありますCharFieldですフィールド
新しいフィールドセットのデフォルト値
- タグセットデフォルト=
- デフォルトは空の場合はnull =真であること
- デフォルト値が与えられた後の入力から選択され