大榔头

导航

记录自己成长001-基于django的登录页


前端登录页面代码

 


<!
DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>SRM平台系统</title> <link rel="stylesheet" href="../static/css/login.css"/> </head> <body> <script src="/static/js/jquery-3.6.0/jquery-3.6.0.min.js"></script> <script src="/static/js/jquery-3.6.0/jquery-3.6.0.js"></script> {# <p><b>Python_Web_使用Django搭建Web服务器</b></p>#} <form action="/" method="post"> {# 设置登录页背景图片#} <div class="demo"> {# 登录框样式设置#} <div id="login-box"> <div> <div> <h1 id="loginTitle">输入用户名称</h1> {# <p>输入用户名称</p>#} </div> <div> <label> <input id="loginName-box" type="text" placeholder="请输入您的用户名" name="user" /> {# input 报错显示: Missing associated label ==>缺少关联标签#} {# label 标签解决input 显 https://blog.csdn.net/weixin_30894583/article/details/96561284#} </label> </div> {# <input type="text" placeholder="13324681397" name="user" />#} <div> <label> <input id="loginPassword-box" type="password" placeholder="请输入您的密码" name="pwd" /> </label> </div> {# <input type="password" placeholder="666666" name="pwd" />#} <div> <input class="button" type="submit" value="提交" name="loginSubmit" /> </div> </div> </div> <div> <P>用户已输入的数据展示</p> <table border="2"> {#Deprecated HTML attribute: 不推荐的HTML属性 =>border#} <thead> {#Element th is not allowed here : 此处不允许使用元素th #} <th>编号</th> <th>手机号</th> <th>密码</th> <th>用户名</th> <th>用户类型</th> </thead> <tbody> {#注释: jinja2的语法,下面表示一个for循环,data是views的indexHtml函数传递过来的key值 ,在jinja2中,存在三种语法: 控制结构 {% %},变量取值 {{ }},注释 {# #} {% for line in data %} <tr> <td>{{ line.id }}</td> <td>{{ line.user }}</td> <td>{{ line.pwd }}</td> </tr> {% endfor %} </tbody> </table> </div> </div> </form> </body> </html>
登录页面样式

/*登录页面设置属性*/

.demo{
    position:fixed;
    top:0;
    left:0;
    width:100%;
    height:100%;
    min-width:1000px;
    z-index:-10;
    zoom:1;
    background-color:#fff;
    background:url("/static/imgs/1.png");  /*背景图片路径*/
    background-repeat:no-repeat;
    background-size: auto;
    -webkit-background-size:cover;
    -o-background-size:cover;
    background-position:center;
}

/*登录标题设置*/
#loginTitle{
    font: icon;
    font-size: 25px;
    color: white;
    background: transparent;
}

/*设置登录框区域属性*/
#login-box {
    border: 1px solid #00e1ff;  /*边框*/
    width: 350px;          /*边框宽度*/
    height: 244px;        /*边框高度*/
    text-align: center; /*盒子中的样式 所在位置   center==》居中  left 左边  right右边*/
    margin:16%;        /**/
    margin-left:70%;   /*框体距离左边的距离*/
    margin-top:15%;   /*框内实体距离上一级,边框的顶部距离*/
    /*background-image: url("/static/imgs/jsonstsan.png");*/ /*使用图片作为背景图*/
    /*background:lightsteelblue;  !*使用颜色做边框的背景图*!*/
    background:transparent;  /*使用透明色色做边框的背景图*/
    padding: 5% 1%;   /*框内实体的位置  第一个参数是 距离下面边距  第二个参数是距离右面边距*/
}
/*先放着*/
#loginNumber-box  {
    color: white;
}

/*设置用户名登录框属性*/
#loginName-box{
    background: transparent; /*transparent 设置背景色为透明    rgba(0, 0, 0, 0.8)也是设置为透明*/
    margin-top: 3%;   /*框内实体距离上一级,边框的顶部距离*/
    padding: 1% 1%;   /*框内实体的位置  第一个参数是 距离下面边距  第二个参数是距离右面边距*/
}

/*设置登录密码框属性*/
#loginPassword-box{
    background: rgba(0, 0, 0, 0);  /*transparent 设置背景色为透明    rgba(0, 0, 0, 0.8)也是设置为透明*/
    margin-top: 3%;   /*框内实体距离上一级,边框的顶部距离*/
    padding: 1% 1%;   /*框内实体的位置  第一个参数是 距离下面边距  第二个参数是距离右面边距*/
}

/*设置提交按钮样式*/
#loginButton-box{
    background: #a73417;  /*transparent 设置背景色为透明    rgba(0, 0, 0, 0.8)也是设置为透明*/
    margin-top: 3px;   /*框内实体距离上一级,边框的顶部距离*/
    padding: 1% 1%;   /*框内实体的位置  第一个参数是 距离下面边距  第二个参数是距离右面边距*/
}

/*重置按钮属性*/
.button {
    background-color: transparent; /*!* Green *!*/
    /*background-color: aqua;*/
    /*background-image: url("/static/imgs/jsonstsan.png");*/
    border: 3px solid #4cff00;  /*边框*/
    color: #a73417;       /*字体颜色*/
    padding: 5px 10px;  /*按钮宽高*/
    margin-top: 5px;       /*上边距*/
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 22px;
}

/*设置input输入框的背景色*/
/*CSS修改input的placeholder颜色*/
input::-webkit-input-placeholder {
    color: #e83c11;
    font:caption;
}

views.py

 

from django.shortcuts import render
from cmdb import models

"""
# Create your views here.
# from django.shortcuts import HttpResponse  # 导入HTTP响应类
# def helloDjango(request):   # request参数必须有,类似self的默认规则,名字可以修改.他封装了用户请求的所有内容
#     return HttpResponse("Hello  Django world ~~~~~ ")   #  在django的响应中不能直接返回字符串,需由HttpResponse封装
"""

# 创建一个用户列表,预先存储两个数据
user_list = [
             {"user": "tom", "pwd": "123456"},
             {"user": "bob", "pwd": "147258"},
             ]
"""
# def indexHtml(request):

#     返回一个HTML文件,当想渲染一个html文件时,需要使用render方法进行打包

#     if request.method == "POST":
#         name = request.POST.get("userName", None)
#         pwd = request.POST.get("userPwd", None)
#         print("name={0},pwd={1}".format(name, pwd))
#     return render(request, "index.html")  # 参数1固定,参数2:指定返回的html文件


# def indexHtml(request):

#     返回一个HTML文件,当想渲染一个html文件时,需要使用render方法进行打包

#     if request.method == "POST":
#         name = request.POST.get("userName", None)
#         pwd = request.POST.get("userPwd", None)
#         print("name={0},pwd={1}".format(name, pwd))
#         tem = {"user": name, "pwd": pwd}
#         user_list.append(tem)
#      return render(request, "index.html",{"data": user_list})
# 参数1固定,参数2:指定返回的html文件,参数3是后台返回给浏览器的数据是一个字典,
#      "data"键名为一个指针会被对应到html中使用
"""


def index_html(request): # Function name should be lowercase """ 返回一个HTML文件,当想渲染一个html文件时,需要使用render方法进行打包 """ # user_list_fist = [] # print(10010, "判断密码是不是正确") if request.method == "POST": print(10000, "index", "从页面拿输入的手机号码和密码") username = request.POST.get("user", None) password = request.POST.get("pwd", None) print(10011, "index", "登录用户==>", "name={0},pwd={1}".format(username, password)) istrue = 0 users = models.UserInfo.objects.all() # 从数据库中读取所有行 # print(90100, users) # 若UserInfo中的字段名和html中使用的字段名对应可省略下面的转换操作 user_list1 = [] print(10018, "index", "系统表中的用户==>", "^^^^^^^==显==示==在==下==方==^^^^^^^^") for user in users: # 遍历从数据库中取出的数据转换为待展示的字典格式 tem = {"id": user.id, "user": user.username, "pwd": user.password} user_list1.append(tem) if user.username == username and user.password == password: istrue = 1 # print(000000) break else: istrue = 0 # print(11111) # print(10016, user_list1) import MySQLdb # 打开数据库连接 db = MySQLdb.connect("127.0.0.1", "root", "root", "huwenlong", charset='utf8') # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 # sql = "SELECT * FROM cmdb_userinfo WHERE INCOME > %s" % (1000) sql = "SELECT * FROM huwenlong.cmdb_userinfo;" # print(10012, sql)+ try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() login_system = [] login = login_system.append(results) # 拿到数据库的列表 # print(9008, "拿到cmdb_userinfo表中的数据", login) for row in results: id = row[0] username = row[1] password = row[2] user_area = row[3] user_name = row[4] print(10013, "index", "打印cmdb_userinfo表中的数据==>", "编号=%s,用户名称=%s,登录密码=%s,用户姓名=%s,用户类型=%s" % (id, username, password, user_area, user_name)) # 打印结果 # login_system.append(results) # print(9007, "拿到cmdb_userinfo表中的数据", login_system) # print(9009, "拿到cmdb_userinfo表中的数据", login_system) except: # 出错 print(10014, "index", "Error: unable to fetch data") # 关闭数据库连接 db.close() if istrue == 1: # 判断用户名及密码是否正确 # 返回的数据和数据表中的数据进行对比 # 渠道值,比对正确后跳转 # return HttpResponse("Hello Django world ~~~~~ ") # 如果正确,(这里调用另一个函数,实现登陆成功页面独立,使用HttpResponseRedirect()方法实现 # 跳转页面 return render(request, 'system.html', {'info': 'Welcome to login,sir...'}) else: # 用户密码错误,跳转这页面 return render(request, '404.html', {'error': 'username or password eror'}) # 不正确,通过render(request,"index.html")方法在error标签处显示错误提示 models.UserInfo.objects.create(username=name, password=pwd) # 添加数据到数据库 users = models.UserInfo.objects.all() # 从数据库中读取所有行 print(10045, "index", "打印从用户表中拿到了什么!", users.values()) # 若UserInfo中的字段名和html中使用的字段名对应可省略下面的转换操作 user_list = [] for user in users: # 遍历从数据库中取出的数据转换为待展示的字典格式 tem = {"user": user.username, "pwd": user.password} user_list.append(tem) # print(10015, user_list) return render(request, "login.html", {"data": user_list}) # 参数1固定,参数2:指定返回的html文件,参数3是后台返回给浏览器的数据是一个字典, # "data"键名为一个指针会被对应到html中使用

 

posted on 2021-07-28 16:12  大榔头  阅读(80)  评论(0编辑  收藏  举报