• Django第二篇


    django第二篇

    1.静态文件配置

    接口前缀:

    ​ STATIC_URL = '/static/'

    跟静态文件夹的名字没有关系,默认情况下这个前缀跟静态文件夹名字一样

    文件配置

    STATICFILES_DIRS = [

    ​ os.path.join(BASE_DIR,'static')

    ]

    'static':就是你的静态文件夹路径,可以设置多个,会依次查找列表中所有的静态文件路劲,找到就停止,都没有的话返回404(资源不存在)

    2.form表单操作

    form表单触发提交数据的动作两种方式:

    <input type='submit'>
    
    <button></button>
    

    form表单提交数据地址的指定及方式:

    ​ action属性控制提交的地址

    方式一:全路径

    <form action='http://127.0.0.1:8000/login/'>
    

    方式二:只写路劲后缀

    <form action='/login/'>
    

    方式三:不写(默认往当前路劲提交)

    注意:利用a标签href属性可以指定页面跳转的路劲,href可以写全路劲,但是推荐写后缀即可

    <a href='/login/' class='btn btn-success'>登入</a>
    

    两种请求方式(form表单默认是get请求)

    #根据客户端请求方式的不同执行不同的逻辑代码
    def login(request):
        #获取客户端的请求方式
        print(request.method) #注意是全大写的字符串
        if request.method == 'POST':
            return HttpResponse('ok')
        return render(request,'login.html')
    

    获取请求方式中携带的参数

    def login(request):
        if request.method == 'POST':
            print(request.POST)  #里面存放了客户端post提交的所有数据,可以看成是一个大字典,{'username':['lucas'],'password':['123']}
            print(request.POST.get('username')) #value虽然是一个列表,但是获取值得时候拿到的是单个元素,默认只会取列表里的最后一个元素
            print(requet.POST.getlist('username'))  #一次性获取value列表里的所有数据,应用场景可以是用户的爱好,多选框   
    
    #get请求的取值方式和post一样
    

    3.django连接数据库

    修改配置文件

    DATABASES = {
        'default':{
            'ENGINE':'django.db.backends.mysql',
        	'NAME':'day54', #库名
            'HOST':'127.0.0.1',
            'POST':3306,
            'USER':'root',
            'PASSWORD':'123'
        }
    }
    #注意:键必须是大写
    

    替换

    ​ 告诉Django用pymysql替换它,默认mysqldb模块连接数据库

    ​ 方式一:在项目文件夹下面的__init__.py

    ​ 方拾二:在应用文件夹下的__init__.py

    #固定写法
    import pymysql
    pymysql.install_as_Mysql()
    

    4.orm简单操作

    orm简介

    ​ orm:对象关系映射,简单来说就是类对应数据库中的一张表,类对象对应表记录,对象的属性对应某条记录的值

    ​ django的orm不能自动创建库,但是可以自动创建表

    ​ 小提示:一个django项目就使用一个库,不要多个django项目使用一个库

    数据库迁移(同步)命令

    ​ 在models创建好类之后,还需要两个命令:

    ​ python3(当前所用解释器名称) manage.py makemigrations:将数据库变动记录到文件中

    ​ python3 manage.py migrate:将数据库变动同步到数据库中

    5.操作数据库

    User表插入数据

    方式一:

    user_obj = models.User.objects.create(name=username,password=password)
    #create方法有一个返回值,就是当前新增的数据对象本身
    

    方式二:

    user_obj = models.User(name=password,password=password)
    user_obj.save()
    

    查询数据

    获取User表所有的数据
    user_list = models.User.objects.all() #获取user表所有的数据
    
    

    上图中的user_list是QuerySet对象,可以通过点query查看获取sql语句,QuerySet对象支持索引取值,但是不推荐,推荐使用自带的.first()来获取第一条数据

    获取单个值
    user_query = models.User.objects.filter(id=1)  # queryset对象
    user_obj = user_query.first()  # 数据对象
    # 当条件不存在的情况下会返回一个空的queryset对象,推荐使用
    
    user_obj = models.User.objects.get(id=1)  # 用get可以直接获取到数据对象本身,但是查询条件不存在的情况下直接报错,所有推荐使用filter
    

    删除数据

    models.User.objects.filter(id=1).delete()  # 会将queryset所有的数据对象全部删除
    

    修改数据

    方式一:

    models.User.objects.filter(id=edit_id).update(name=username,password=password)
    #调用queryset封装的方法,该方法是一个批量操作,会将queryset内所有的数据对象全部修改
    

    方式二:

    user_obj = models.User.objects.filter(id=edit_id).first()
    user_obj.name = username
    user_obj.password = password
    user_obj.save()
    
    上述edit_id获取方式:

    方式一:利用input隐藏一个标签

    <input type='hidden' name='edit_id' values='{{user_obj.pk}}'>  #django中pk默认取的是主键字段,User表中id就是主键字段
    

    方式二:GET请求携带

    <form action='/edit/?edit_id={{user_obj.pk}}' method='post'>
        
    </form>
    

    上述修改、删除都是通过queryset对象点的方法完成的,会作用于内部所有的数据对象,类似于批量操作

    注意:修改模型层里面的根表相关的所有的数据之后,必须重新执行数据库迁移命令

    6.django请求生命周期

  • 相关阅读:
    【20171030早】sqli-libs Less7-15 练习
    【20171029中】sqli-libs 注入的过程 less1-4
    【20171028早】ubuntu 16.04 LTS 安装php遇到的问题
    【20171027早】alert(1) to win 第9,10,11,12题
    【20171026早】alert(1) to win
    【20171025晚】alert(1) to win 第五题 正则表达式过滤
    【20171025中】alert(1) to win 脚本渲染自建
    【20171025早】alert(1) to win 练习
    mysql 导入 excel 数据
    我的书单
  • 原文地址:https://www.cnblogs.com/yanminggang/p/10986980.html
Copyright © 2020-2023  润新知