データベース関連のアクション
model
ORM技術を使用します(オブジェクトリレーショナルマッピングオブジェクト・リレーショナル・マッピング)
- ビジネス・ロジック
解耦合
(object.save()object.delete()、など) - リレーショナルデータベース(を通じて、DDLを使用して
models定义
実装定義データベーステーブル。)
MySQLの接続ドライバ
-
あるmysqlclient
- パイソン2、図3は、直接使用することができ
- 致命的な欠陥は:インストール要件は、MySQLを持って、コンフィギュレーションファイルは、指定した場所に存在している必要があります
-
python-mysqlの
- python2良いサポート
- python3サポートされていません
-
pymysql
- python2、のpython3サポート
- また、ライブラリの前面に変装することができます。
データベーステーブルを作成します。
私たちは、修正App/models.py
ファイルを次のように、コードは次のとおりです。
# models.py
from django.db import models
class Student(models.Model):
s_name = models.CharField(max_length=16) # 设置最大长度16
s_age = models.IntegerField(default=1) # 设置默认值1
上記のクラスの代表数据库表名
クラスフィールド内、models.Model継承し、CharFieldです(等価VARCHAR)のDateField(等価日時)として、MAX_LENGTHパラメータは、長さを定義することによって、データテーブルのフィールド(名前)、データ型を表します。
これは、モデルで定義されており、データベースのテーブルを生成しません、必要な迁移
。
移行
移行の概念は:モデルがデータベースにマッピングされます。
(1)発生マイグレーションで、命令行
操作:
$ python manage.py makemigrations ## 生成迁移文件
或
$ python manage.py makemigrations [django的app名]## 针对某一个django模型
出力:
## 运行结果
Migrations for 'two':
two\migrations\0001_initial.py
- Create model Student
結果のファイルの移行対応でアプリ内のフォルダの移行ファイルの下で:
(2)移行を行うが、それはデータベースへのファイルのマイグレーションマッピングする対応するデータベーステーブルを作成し、:
$ python manage.py migrate # 创建表结构
成分表の構造:应用名_类名
(例:app_test)。
注:私たちはモデルがテーブルに主キーを設定する必要はありませんが、Djangoは自動的に主キーとしてIDを追加しますが。
データを追加します
まず、urls.py
アドオン
from django.conf.urls import url
from App import views
urlpatterns = [
url(r'^index/',views.index),
url(r'^addstudent/',views.addStudent) # 添加此项
]
追加データはで、オブジェクトを作成し、その後、セーブ機能SQL INSERTと同等のものを実行する必要がmodels.pyに追加します
import random
from django.http import HttpResponse
# Create your views here.
from two.models import Student
def addStudent(request):
stu = Student()
stu.s_name = 'Jerry %d' % random.randrange(100)
stu.s_age = 10
stu.save()
return HttpResponse('添加成功')
クエリデータ
まず、urls.py
アドオン
from django.conf.urls import url
from App import views
urlpatterns = [
url(r'^index/',views.index),
url(r'^addstudent/',views.addStudent),
url(r'^getstudent/',views.getstudent), # 添加此项
]
でviews.pyに追加
import random
from django.http import HttpResponse
# Create your views here.
from two.models import Student
def getstudent(request):
students = Student.objects.all()
for student in students:
print(student.s_name)
#return HttpResponse('查找成功')
context = {
"hobby":"Play Games",
"students":students # 查询出来的student_list
}
return render(request,'student_list.html',context)
templates
追加student_list.html
この用途の模板语法
ループのための、浏览器
ジャンゴ、テンプレート構文を解決できないブラウザに送信され、HTML構文に変換されます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>StudentList</title>
</head>
<body>
<h1>{{hobby}}</h1> # {{}}读取后端的数据
<ul>
{% for student in students %}
<li>{{student.s_name}}</li> # {{}}读取后端的数据
{% endfor %}
</ul>
</body>
</html>
アクセス住所:
更新
まず、urls.py
アドオン
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^updatestudent/',views.updatestudent)
]
でviews.pyに追加
def updatestudent(request):
student = Student.objects.get(pk=1)
student.s_name = 'Tom'
student.save()
return HttpResponse('更新成功')
ウェブサイトを訪問し、データベースを表示します。
削除
まず、urls.py
アドオン
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^deletestudent/',views.updatestudent)
]
でviews.pyに追加
def deletestudent(request):
student = Student.objects.get(pk=2)
student.delete()
return HttpResponse('删除成功')
アクセスアドレスとクエリのデータベース: