Python Django 学习日志(二)

前言

上篇文章大概介绍了Python和django的一些基本操作,这篇文章将会介绍数据库的一些东西,简单写一个登录注册功能,并与数据库进行交互,注册后可以存入到数据库,登录后可以看到个人信息。

一:登录

首先新建一个login页面,并增加两个输入框和一个提交按钮,一个用于输入用户名,一个用于输入密码,并将密码输入框type改为password,这样将会密文显示,而非明文。

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login" method="post">
    <div>
        <label>用户名:</label><input name="username" type="text">
    </div>
    <div>
        <label>密码:</label> <input name="password" type="password">
    </div>
    <button type="submit">提交</button>
</form>
</body>
</html>

然后修改view.py文件,用于获取Html传入的数据,这时候我们就可以使用request去获取当前的请求方式,代码可以写成这样

view.py

def login(request):
    if request.method == "POST":
        # 接受用户名
        username = request.POST.get("username")
        # 接收密码
        password = request.POST.get("password")
        # 打印接收的数据
        print(username, password)
        return render(request, "login.html")
    elif request.method == "GET":
        return render(request, "login.html")

这里我加了个判断用于判断get请求和post请求,判断显示什么,post收到数据后打印传入数据。

打开浏览器,随机输入几个字母看看,这时你会发现又报错了。这是因为Django对post请求做了限制,很简单,我们只要稍微修改一下代码就可以了

首先在login里加入

{% csrf_token %}

然后在在setting.py注释

重新运行

 

打印成功,程序完成了。当然这样并不能存储数据,刷新一下就没有了,怎么能保存呢?先看一下保存在当前页面

我们先修改view.py里的代码,先新建一个数组(列表)用于临时存储输入的用户名和密码,我这里新建了userList字段用于临时存储输入的用户名和密码,然后将用户名和密码append到列表里(append方法是将数据添加到最后一条),具体代码可以写成这样

view.py

userList=[]
def login(request):
    if request.method == "POST":
        # 接受用户名
        username = request.POST.get("username")
        # 接收密码
        password = request.POST.get("password")
        userList.append({"username":username,password:password})
        # 打印接收的数据
        print(username, password)
        return render(request, "login.html",{"data":userList})
    elif request.method == "GET":
        return render(request, "login.html")

然后修改login中到代码,增加

login.html

<script type="text/javascript">
    var data={{ data|safe }}
    console.log(data)
</script>

django和js交互就是用两个{}来交互的,我这里写的比较简单主要就是接受到数据,打印一下数据。

运行代码,可以看到我们数据打印出来,但是好像有点问题,为什么密码的字段也是是bbb呢,原来是我们view.py写错来,这里修改下就好了,我就不发代码了,很简单

我们知道,临时存肯定是不行的,怎么存到数据库呢?这里就要用到models这个类了,首先我们打开这个文件,我们看到这个文件已经帮我们引用了一个models类而这个类也是我们所需要用的

简单点我们先新建一个userinfo类,然后加点代码

models.py

 

然后打开terminal运行python manage.py makemigrations,这里使用Linux和MacOS的可能会报错,因为Linux和MacOS默认安装了Python2.7,所以会有冲突

这里只需要指定Python版本就可以了,重新运行python3 manage.py makemigrations,出现以下内容则说明运行成功

然后执行python3 manage.py migrate 出现以下内容则说明成功

这时你看结构目录还会发现多出一个文件,这是数据库临时修改文件,打开其实就是sql代码,有兴趣多可以研究下

这里我默认用多是自带多Sqlite,所以就没有配置,如果有用mysql,或者sqlserver的可以自行在settings里配置,看一下sqllite数据库,已经创建完成,并增加了一个demo_userinfo表,这就是我们刚才创建到

既然数据库创建好了,那么该如何使用呢?其实也很简单,我们再次修改view.py文件

view.py

def login(request):
    if request.method == "POST":
        # 接受用户名
        username = request.POST.get("username")
        # 接收密码
        password = request.POST.get("password")
        # 添加到列表
        # userList.append({"username":username,password:password})
        # 添加到数据
        UserInfo.objects.create(usrename=username, password=password)
        #获取表中所有数据
        userList=UserInfo.objects.all()
        # 打印接收的数据
        print(userList)
        return render(request, "login.html", {"data": userList})
    elif request.method == "GET":
        return render(request, "login.html")

然后输入用户名和密码,成功后到数据看看是否有数据,如果有结果则表示配置正常

 

Over

总结:

Python+Django 学习日志二到这里算是结束了,下一节准备考虑写序列化和反序列化,因为上面例子从数据取出数据后在html中打印是会报错到,所以下一节考虑序列化和反序列化 ,文章名称和commit对应,可以自行下载

Github下载地址

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值