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)

方式二:

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)

方式二:

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请求生命周期

猜你喜欢

转载自www.cnblogs.com/yanminggang/p/10986980.html
今日推荐