ios django 连接mysql_django连接mysql完成简易登录功能

写django之前需要知道的小点

1,路由访问如果不加斜杠 会内部自动重定向加斜杠的路由

2,所有的html文件默认都写在templates文件夹下,这是一种约定俗成的规定,一定要检查settings有没有配置好

3,所有的静态文件(css,js,前端第三方类库)默认都放在static文件夹下,css,js一般需要自己创建

4,html页面引入外部资源的方式

cdn

本地

静态文件配置

作用:暴露给外界能够访问服务器静态文件夹下面所有的资源

STATIC_URL = '/static/'

# 静态文件配置

STATICFILES_DIRS = [

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

]

STATIC_URL = '/xxx/'  # 接口前缀 跟你的静态文件夹的名字一点关系都没有

# 默认情况下这个前缀跟静态文件夹名字一样!!!

# 静态文件配置

STATICFILES_DIRS = [

os.path.join(BASE_DIR,'static'),  # 就是你的静态文件夹路径

os.path.join(BASE_DIR,'static1'),

os.path.join(BASE_DIR,'static2')

]

2b2546b215349b3cf105d3977889aab9.png

# ps:会依次查找列表中所有的静态文件路径 找到的话立刻停止,都没有找到返回404

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

form提交数据的地址如何指定及方式?

action属性控制提交的地址

方式:

1.全路径

2.只写路径后缀

3.不写 (默认往当前路径提交)

form表单默认是get请求

cfe0e5ecada17d1cd72cfe16f052c5d1.png

d5143837b0b90b5424686d5d1ea44537.png

注意:出现上面那个403页面时,需要将MIDDLEWARE的第四条注释掉

根据客户端请求方式的不同执行不同的逻辑代码

def login(request):

# 获取用户端提交的请求方式

print(request.method) # 拿到的请求方式是全大写的字符串if request.method == 'GET':return render(request,'login.html')

elif request.method== 'POST':return HttpResponse("收到了 老弟")

个人建议按照下面这种方式书写 减少代码冗余及结构混乱的问题

def login(request):

if request.method == 'POST':

return HttpResponse('OK')

return render(request,'login.html')

request方法

request.method:获取用户端提交的请求方式

request.POST:可以把它当成一个大字典里面存放了客户端post提交的所有的数据

2c918b21ecbd95a1ab80c09942201655.png

request.POST.getlist():一次性获取value列表里面所有的数据

def login(request):

print(request.method) # 拿到的请求方式是全大写的字符串if request.method == 'GET':return render(request,'login.html')

elif request.method== 'POST':return HttpResponse("收到了 老弟")if request.method == 'POST':

print(request.POST) # 你就把它当成一个大字典里面存放了客户端post提交的所有的数据

# request.POST:< QueryDict: {'username': ['jason'], 'password': ['123']} >print(request.POST.get('username')) # value虽然是个列表但是获取value的时候拿到却是单个元素

# 默认只会取value列表里面的最后一个元素

# request.POST:print(request.POST.getlist('username')) # 要想一次性获取value列表里面所有的数据需要用getlist()

# ['jason', 'egon']

print(request.POST['password']) # 不推荐使用该方法获取数据return HttpResponse('OK')return render(request,'login.html')

获取value列表里面所有的元素需要使用getlist  应用场景:用户的爱好 多选框

get只会获取到value列表的最后一个元素

print(request.GET)  #

request.GET.get('user')

#

request.GET.getlist('username')

pycharm连接数据库

先选定数据库,再下载好对应的数据库驱动

036e7c13c23337306afdc13fffc31102.png

53b7c6442479ce982295e536f1f55e76.png

555de0d7a34b15823917077b490a5c6e.png

输入要连接的库,用户名和用户密码,输入完成后可以点test connection测试能不能连接成功

e7089340d7efed60f3b8f1bcf31ef48e.png

5f92cca8cfe4902475f09a80ba35cc4e.png

django连接数据库

1.需要修改配置文件

b7d845770a8d78c88fa6d09df73aabe4.png

452bf8e9fcc39c52379bf43ff03c2e78.png

django默认连接自带的sqlite3数据库,我们要连mysql需要做一些修改

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'day54',

'HOST':'127.0.0.1',

'PORT':3306,

'USER':'root',

'PASSWORD':'123'

}

}

ps:键必须都是大写

2.告诉django用pymysql替换它默认mysqldb模块连接数据库

方式1:在你的项目文件夹下面的__init__.py

方式2:也可以在你的应用文件夹下面的__init__.py

44fffbb9175436e8a205b7ba1ab8cafe.png

# 固定写法

import pymysql

pymysql.install_as_MySQLdb()  # 告诉django用pymysql代替mysqldb连接数据库

ORM回顾

对象关系映射

类            》》》  表

对象           》》》  表记录

对象的属性  》》》 一条记录某个字段对应的值

16886da0d95f80097d36836d8d10e02d.png

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

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

数据库迁移(同步)命令(******)

python3 manage.py makemigrations  将你的数据库变动记录到一个小本本上(并不会帮你创建表)

python3 manage.py migrate         将你的数据库变动正在同步到数据库中

ac95e1219f6e004d5b63b4eb7059ae5d.png

新增数据

# 操作数据库user表插入数据

# 方式1:

user_obj = models.User.objects.create(name=username,password=password)

f819d55b9a4eec93dbbcb0617a575f0b.png

返回值就是这个表对象,可以用user_obj.pk(主键对应的值),user_obj.name,user_obj.age这些方法属性

# 方式2:

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

user_obj.save()  # 对象调用save方法保存到数据库

查询数据

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

# 只要是QuerySet就可以点query查看获取到当前QuerySet对象的内部sql语句

print(user_list.query)

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

添加数据

# 注意 路径的书写一定要加斜杠

重定向  可以写别人的网址也可以是自己的路径

return redirect('/userlist')

return redirect('/userlist/')

queryset对象支持索引取值 但是不推荐你使用  推荐使用自带的.first()帮你获取第一条数据

删除

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

查询数据需要注意的是你获取到的到底是一个queryset还是一个数据对象

user_query = models.User.objects.filter(id=edit_id).first()  # 如果你是要获取数据对象first千万别忘了

# filter当条件不存在的情况下会返回一个空的queryset对象

user_obj = models.User.objects.get(id=edit_id)  # 用get可以直接获取到数据对象本身但是查询条件不存在的情况下直接报错

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值