Django学习笔记-2

1、请求和响应

views 函数中的输入request对象封装了用户发送的所有请求相关数据。

获取请求方式(GET/POST)

request.method 

获取通过url传递的参数

request.GET
request.POST

HttpResponse('str'),将字符串内容返回给请求者【响应】

return HttpResponse("str")

读取HTML的内容+渲染(替换内容)生成字符串返回给用户浏览器【响应】

return render(request,'html.html',{"para": "para"})

浏览器重定向到其他页面【响应】

from django.shortcuts import redirect

return redirect("url")

 重定向采用第二种方式(返回url,请求者重新请求)

 例子:使用请求和响应实现用户登录

path('login/',views.login)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form method="post" action="/login/">
        <!--action='/login'会引发django报错,可修改设置解决-->
        {% csrf_token %}
        <!--csfr_token是django安全机制,必须使用-->
        <input type="text" name="user" placeholder="username">
        <input type="password" name="pwd" placeholder="password">
        <input type="submit" value="submit"/>
    </form>
</body>
</html>
def login(request):
    user={
        "name": 'admin',
        "password": '123456'
    }
    if request.method=='GET':
        return render(request,'login.html')
    if request.method=='POST':
        submit=request.POST
        if submit['user']==user['name']:
            if submit['pwd']==user['password']:
                return redirect("../user")
            else:
                return render(request,'login.html',{'error_msg': "password incorrect"})
        else:
            return render(request,'login.html',{'error_msg': f"user {submit['user']} not exist"})

2、数据库操作

python对数据库进行操作:pymysql库

django对数据库进行操作:ORM(避免直接的sql语句编写)

ORM功能:

  • 创建、修改、删除数据表
  • 操作数据表中数据

django连接数据库:settings.py

默认文件数据库sqlite,可修改为mysql

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'admis_web',
        'USER': 'root',
        'PASSWORD': '###',
        'HOST': 'localhost',
        'PORT': 3306,
    }

 django操作数据表:models.py

  • 创建数据表
  • 修改数据表
  • 删除数据表
class User(models.Model):
    name = models.CharField(max_length=32)
    password=models.CharField(max_length=64)
    role=models.CharField(max_length=32)

  生成表结构

python manage.py makemigrations
python manage.py migrate

在models.py中修改后重新生成即可实现数据表的三类操作。

在对数据表添加属性时,存在原有数据在最新属性上没有值的情况。此时有三种方法解决:

  1. 更新表结构时手动输入值。
  2. 表设置默认值
    role=models.CharField(max_length=32,default='user')
  3. 允许为空
    role=models.CharField(max_length=32,null=True,blank=True)

django进行增删改查:

  • insert:
    User.objects.create(name='admin',password='123456',role='manager')
  • delete
    User.objects.filter(id=1).delete() #删除id=1数据
    User.objects.all().delete()  #删除表中所有数据
  • select
    data_list=User.objects.all() #获取表中所有数据
    #type(data_list)=QuerySet[User object]
    
    
    #访问数据
    for obj in data_list:
        print(obj.id,obj.name,obj.password,obj.role)
    
    
    data_list=User.objects.filter(id=1) #获取表中指定数据
    
    data=User.objects.filter(id=1).first() #获取表中指定唯一数据
    #type(data)=User object
  • update
    User.objects.all().update(password='88888888')
    User.objects.fliter(name='quin').update(role='fucking animal')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值