Django第二篇

django第二篇

1.静态文件配置

接口前缀:

​ STATIC_URL = '/static/'html

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

文件配置

STATICFILES_DIRS = [mysql

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

]数据库

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

2.form表单操做

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

<input type='submit'>

<button></button>

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

​ action属性控制提交的地址post

方式一:全路径3d

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

方式二:只写路劲后缀code

<form action='/login/'>

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

注意:利用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请求生命周期

相关文章
相关标签/搜索