day17-用户登录以及跳转后台管理页面和django的生命周期
一、前言
今天我们就来实战模拟一个用户登录之后,跳转到后台管理页面的,这个是我们做系统经常做的,那这个是怎么做的呐?今天就来看看,这个是怎么搞的。
二、模板中的for循环
2.1、模板中的for循环
说明:django的模板中是支持for循环的,所以当我们需要有很多数据的时候,是需要用到for循环的,语法如下:
{% for 元素名 in 列表名 %} {{ 元素值}} #如果是字典的话,是:{{元素.key值}},比如:{{row.username}},不是{{row["username"]}} {% endfor %}
以下是view.py代码:
USER_LIST = [ #设置一个user_list的列表 {'username':"sbh",'email':"zqg0808","gender":"girl"}, {'username':"sgg",'email':"cy0808","gender":"boy"}, {'username':"csg",'email':"zqgcy0808","gender":"youngboy"} ] # for index in range(20): # temp = {'username':"sbh" + str(index),'email':"zqgcy0808","gender":"man"} # USER_LIST.append(temp) def home(request): return render(request,"home.html",{"user_list":USER_LIST}) #传入一个列表
django模板home.html:
<body style="margin: 0 auto;"> <div style="height: 48px;background: #dddddd"></div> <div> <table> {% for row in user_list %} #循环列表 <tr> <td>{{ row.username }}</td> #row.key名获取值 <td>{{ row.email }}</td> <td>{{ row.gender }}</td> </tr> {% endfor %} #结束for循环 </table> </div> </body>
三、用户登录、跳转后台管理页面
3.1、后台管理页面
说明:我们先写一个home.html的页面,在模板中编写,templates中创建home.html
<body style="margin: 0 auto;"> <div style="height: 48px;background: #dddddd"></div> <div> <form action="/home/" method="post"> <input type="text" name="username" placeholder="用户名"/> <input type="text" name="email" placeholder="邮箱"/> <input type="text" name="gender" placeholder="性别"/> <input type="submit" value="添加"> </form> </div> <div> <table> {% for row in user_list %} <tr> <td>{{ row.username }}</td> <td>{{ row.email }}</td> <td>{{ row.gender }}</td> </tr> {% endfor %} </table> </div> </body>
如图:
注意:上面用的是模板语言,且我们需要添加内容提交到后台。
3.2、设置urls
说明:我们需要设置urls,当用户访问的时候,跳转到我们的后台处理
from django.contrib import admin from django.urls import path from cmdb import views urlpatterns = [ path('admin/', admin.site.urls), path('login/',views.login), path('home/',views.home), #设置home ]
3.3、编写后台view.py代码
说明:我们提交的数据,需要后台做处理,然后返回到我们的home.html的页面上。
from django.shortcuts import render from django.shortcuts import redirect # Create your views here. #登录之后跳转到home页面 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("/home/") else: error_msg = "用户名或者密码错误" return render(request,"login.html",{'error_msg':error_msg}) USER_LIST = [ {'username':"sbh",'email':"zqg0808","gender":"girl"}, {'username':"sgg",'email':"cy0808","gender":"boy"}, {'username':"csg",'email':"zqgcy0808","gender":"youngboy"} ] # for index in range(20): # temp = {'username':"sbh" + str(index),'email':"zqgcy0808","gender":"man"} # USER_LIST.append(temp) #home页面处理的请求 def home(request): if request.method == "POST": user = request.POST.get("username") email = request.POST.get("email") gender = request.POST.get("gender") temp = {'username':user,'email':email,"gender":gender} USER_LIST.append(temp) return render(request,"home.html",{"user_list":USER_LIST})
效果图:
四、django的生命周期
原理:
-> URL对应关系(匹配) -> 视图函数 -> 打开1个html文件,读取内容 -> 返回给用户
如图所示: