STATIC_URL = '/static/'html
跟静态文件夹的名字没有关系,默认状况下这个前缀跟静态文件夹名字同样python
STATICFILES_DIRS = [mysql
os.path.join(BASE_DIR,'static')sql
]数据库
'static':就是你的静态文件夹路径,能够设置多个,会依次查找列表中全部的静态文件路劲,找到就中止,都没有的话返回404(资源不存在)django
<input type='submit'> <button></button>
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>
#根据客户端请求方式的不一样执行不一样的逻辑代码 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同样
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()
orm:对象关系映射,简单来讲就是类对应数据库中的一张表,类对象对应表记录,对象的属性对应某条记录的值
django的orm不能自动建立库,可是能够自动建立表
小提示:一个django项目就使用一个库,不要多个django项目使用一个库
在models建立好类以后,还须要两个命令:
python3(当前所用解释器名称) manage.py makemigrations:将数据库变更记录到文件中
python3 manage.py migrate:将数据库变更同步到数据库中
方式一:
user_obj = models.User.objects.create(name=username,password=password) #create方法有一个返回值,就是当前新增的数据对象自己
方式二:
user_obj = models.User(name=password,password=password) user_obj.save()
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()
方式一:利用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对象点的方法完成的,会做用于内部全部的数据对象,相似于批量操做
注意:修改模型层里面的根表相关的全部的数据以后,必须从新执行数据库迁移命令