day17-Django初识模板语言
一、前言
今天我们来学习一下后台是如何识别模板语言的,和简单的用户名密码的验证,这个很关键,所以我们要学好了,对于我们以后有很大的用处。
二、表单验证
2.1、request作用
说明:request包含了客户端发过来的所有的信息,包括请求头和请求体的信息。
from django.shortcuts import render # Create your views here. def login(request): print(request.method) #输出请求方法 return render(request,"login.html") #输出 POST
一般情况下:get是获取数据,post是提交数据,这是在一般情况下。 如果请求连接action到自己的,怎么办?
<form action="/login/" method="post"> #不写action也是请求到自己 <p> <label for="user_name">用户名:</label> <input id="user_name" name="username" type="text"/> </p> <p> <label for="pwd">密码:</label> <input id="pwd" name="pwd" type="password"/> <input type="submit" value="提交" /> </p> </form>
如果写的话,action需要写project中urls中的url:
<form action="/admin/" method="post">
如果写成自己的话,则会遇到csf的认认证,这个我们到后面再说,我们需要注释到project中的csf的内容:
2.2、获取用户名密码
说明:我们需要在模板的input标签中添加name属性,然后后台通过字典的形式获取你的用户名密码。模板代码如下:
<form method="post"> #不写action是请求到自己 <p> <label for="user_name">用户名:</label> <input id="user_name" name="username" type="text"/> #添加name属性 </p> <p> <label for="pwd">密码:</label> <input id="pwd" name="pwd" type="password"/> #添加name属性 <input type="submit" value="提交" /> </p> </form>
我们在后台获取,注意了:request.POST封装了所有post方法发过来的请求。
from django.shortcuts import render def login(request): #获取客户端请求的方法 if request.method == "POST": #获取用户名密码 user_name = request.POST.get("username",None) password = request.POST.get("pwd",None) return render(request,"login.html")
当然获取用户名密码也可以是,只是这种情况没有值的时候会报错,所以我们一般情况下不用:
user_name = request.POST["username"] password = request.POST["pwd"]
2.3、跳转页面
说明:用redirect做重定向跳转到别的页面
from django.shortcuts import render from django.shortcuts import redirect #做重定向跳转使用 def login(request): error_msg = "" if request.method == "POST": user_name = request.POST.get("username",None) password = request.POST.get("pwd",None) if user_name == "root" and password == "123": return redirect("http://www.baidu.com") #调转到百度 else: error_msg = "用户名或者密码错误" return render(request,"login.html",{'error_msg':error_msg})
三、初识模板语言
模板语言的原理: 先找到模板下面的login.html,然后打开这个文件加载到内存中,然后找到这个特殊的字符,error_msg,替换成值。
3.1、views.py设置模板字典
说明:在render返回的值中设置模板字典error_msg
from django.shortcuts import render from django.shortcuts import redirect # Create your views here. def login(request): error_msg = "" if request.method == "POST": user_name = request.POST.get("username",None) password = request.POST.get("pwd",None) if user_name == "root" and password == "123": return redirect("http://www.baidu.com") else: error_msg = "用户名或者密码错误" return render(request,"login.html",{'error_msg':error_msg}) #设置模板字典error_msg
3.2、在模板中设置变量
说明:在模板中用对应的{ { 变量名 } } 设置,来获取后台的值。
这边注意了,span标签,中间没有值的话,在前端页面是不显示的,所以在error_msg初始化是空字符串,如果有错误的话,就会有提示。