django学习笔记4

django听课笔记41.文件介绍2.数据库连接1.django连接数据库2.pycharm连接数据库3.models文件写sql语句1.python操作数据库2.objects.filter方法查询数据库3.create方法增加记录4.django创建表5.外键

1.文件介绍

image-20230810182538790

2.数据库连接

1.django连接数据库

settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'day2',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'CHARSET': 'UTF8'
    }
}
2.pycharm连接数据库

1.pycharm右侧点击database>mysql

image-20230810182939012

2.按要求输入数据库名称,user,password

image-20230810183115147

3.models文件写sql语句

1.python操作数据库

django orm orm:对象关系映射 类->表 对象->记录 对象属性>记录某个字段对应的值

day2>app01>models.py

数据库迁移命令(命令行)

python manage.py makemigrations

python manage.py migrate

from django.db import models
​
# Create your models here.
class User(models.Model):
​
    #auto_increament,int类型
​
    id = models.AutoField(primary_key=True)
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
​
    #每增加记录,需要设空或设置默认值,并进行数据迁移
    hobby = models.CharField(max_length=32,null=True)
    info = models.CharField(max_length=32,default='student')
​
    #得到对象的username
    def __str__(self):
        return self.username
​
2.objects.filter方法查询数据库

views.py

from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.
def home(request):
    return render(request,'home.html')
​
def login(request):
    if request.method == "GET":
        return render(request,'login.html')
    elif request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        #objects.filter方法返回的是对象列表
        obj = models.User.objects.filter(username=username).first()
        
        if obj:
            if obj.password == password :
                return HttpResponse('success')
            else:
                return HttpResponse("wrong password")
        else:
            return HttpResponse("wrong username")

django连接数据库需要下载的第三方库: pymysql mysqlclient

3.create方法增加记录

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

views.py

def register(request):
    if request.method == "GET":
        return render(request,'register.html')
    elif request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        hobby = request.POST.get('hobby')
        obj = models.User.objects.create(username=username,password=password,hobby=hobby)
        print(obj,obj.username,obj.password,obj.hobby)
        return HttpResponse('success register!')
​

4.django创建表

图书表,出版社表,作者表,作者详情表

图书表和出版社表示一对多的关系

图书表和作者表是多对多的关系

作者表和作者详情表是一对一的关系

django会自己创建id,自动增长的主键

id = models.AutoField(primary_key=True)

models.py

class Book(models.Model):
    title = models.CharField(max_length=32)
    #max_digits表示总位数,decimal_places表示小数点位数
    price = models.DecimalField(max_digits=8,decimal_places=2)
​
class Publish(models.Model):
    name = models.CharField(max_length=32)
    addr = models.CharField(max_length=64)
​
class Author(models.Model):
    name = models.CharField(max_length=32)
​
class AuthorDetail(models.Model):
    age = models.IntegerField()
    phone = models.BigIntegerField()
    addr = models.CharField(max_length=64)

5.外键

ForeignKey表示设置外键 1.to表示要关联的表(必选参数) 2.to_filed表示要关联的字段(可选,默认关联主键) 3.on_delete表示当删除关联表中的数据时,当前 表和关联表的行为.值有很多选项:

CASCADE((级联删除)

PROTECT(会报完整性的错误)

SET_NULL(会把外键字段设置为空,前提是允许为空)

SET_DEFAULT(会给外键设置默认值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javatack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值