Django学习小记2-用户登录实例

首先回顾上节的Django三个基础函数:

from django.shortcuts import HttpResponse   #返回字符串
from django.shortcuts import render    #给他一个数据,再给他一个模板 来渲染后返给用户
from django.shortcuts import redirect   #跳转到某个地址

因为request中包含用户请求相关的所有信息(对象),所以可以通过

request.method来看请求的方法【GET\POST】题外话:GET是以URL的形式传递数据,不安全。
print(request.method)

所以基于此,就可以作为判断,提取用户post提交的表单数据:

    if request.method == "GET":
        return render(request,‘login.html‘)
    else:
        #用户POST提交的数据
        u = request.POST.get(‘user‘)
        p = request.POST.get(‘pwd‘)
        if u == ‘admin‘ and p == ‘admin‘:
            #登录成功跳转
            return redirect(‘http://www.baidu.com‘)
        else:
            #登录失败
            return render(request,‘login.html‘)

login.html配置:

<form method="POST" action="/login/">

这时候我们发现确实实现的登陆控制,但是没有登陆失败提示啊~!!!

这就用到 {{ msg}}

这个是在html中容载特殊字符的,若没有给他传值,django就不显示。

login.html中:
...
<input type="submit" value="登录"/><br>
  {{ msg }}

---------------------
urls.py中:

...
        else:
            #登录失败
            return render(request,‘login.html‘,{‘msg‘:‘用户名或密码错误!‘})

其实这个{{ msg}} 就是模板引擎中的特殊标记

除了字符串外,还支持列表字典循环等的特殊标记取值

return render(request,‘index.html‘,{...})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>日志文档填写</title>
</head>
<body>
<h1>归档日志填写:</h1>
        <p>{{ name }}</p>
        <p>{{ users.0 }}</p>
        <p>{{ users.1 }}</p>
        <p>{{ user_dict.k2 }}</p>

        <h3>循环</h3>
        {% for item in users %}
            <h4>{{ item }}</h4>
        {% endfor %}

       <ul>
        {% for item in users %}
            <li>{{ item }}</li>
        {% endfor %}
        </ul>
</body>
</html>

urls.py的配置:

def index(request):
    return render(
        request,
        ‘index.html‘,
        {
            ‘name‘:‘tom‘,
            ‘users‘:[‘王牡丹‘,‘香农‘],
            ‘user_dict‘:{‘k1‘:‘v1‘,‘k2‘:‘v2‘},
        }
    )

urlpatterns = [
    #path(‘admin/‘, admin.site.urls),
    path(‘login/‘,login),
    path(‘index/‘,index),
]

 注意:

  • 特殊标记可以为列表和字典,用 · 来索引取值;
  • 特殊标记作为循环时,可以连同标签一块循环,也可以单独循环。

 使用场景举例:

接上面index.html:

模板源进行渲染可以加列表加表格增删操作之

...
     <ul>
        {% for row in user_dict %}
            <li>{{ row.id }}--{{row.name}}--{{ row.email }}</li>
        {% endfor %}
        </ul>

        <table border="1">
        {% for row in user_dict %}
            <tr>
                <td>{{ row.id }}</td>
                <td>{{ row.name }}</td>
                <td>{{ row.email }}</td>
                <td>
                    <a>编辑</a>|<a href="/del/?nid={{ row.id }}">删除</a>
                </td>
            </tr>
        {% endfor %}
        </table>

相当于对列表元素进行循环,每一项又是一个字典,所以可以用哪个row.id ...

接上面urls.py 修改为:

...
def index(request):
    return render(
        request,
        ‘index.html‘,
        {
            ‘user_dict‘:[
                {‘id‘:‘1‘,‘name‘:‘shannon‘,‘email‘:‘[email protected]‘},
                {‘id‘: ‘2‘, ‘name‘: ‘yunz‘, ‘email‘: ‘[email protected]‘},
                {‘id‘: ‘3‘, ‘name‘: ‘tom‘, ‘email‘: ‘[email protected]‘},
            ]
        }
    )

执行:

一定注意索引用 · 获取



【网络铅笔头,扫一扫~】

附录1:实验登陆 login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录 </title>
    <link rel="stylesheet" href="/static/common.css" />
</head>
<body style="background-color:PowderBlue;">
    <h1>用户登录入口</h1>
    <form method="POST" action="/login/">

        用户名:<br>
        <input type="text"  name="user" required autofocus placeholder="username"><br>
        密码:<br>
        <input type="password" name="pwd" maxlength="12" placeholder="password"><br><br>
        <input type="submit" value="登录"/><br>
        {{ msg }}
    </form>
</body>
</html>

附录2:实验urls.py

from django.contrib import admin
from django.urls import path

from django.shortcuts import HttpResponse,render,redirect
def login(request):
    ‘‘‘
    处理用户请求并返回内容
    :param request:用户请求相关的所有信息(对象)
    :return:
    ‘‘‘
    #return HttpResponse(‘<input type="text" />‘)
    if request.method == "GET":
        return render(request,‘login.html‘)
    else:
        #用户POST提交的数据
        u = request.POST.get(‘user‘)
        p = request.POST.get(‘pwd‘)
        if u == ‘admin‘ and p == ‘admin‘:
            #登录成功跳转
            #return redirect(‘http://www.baidu.com‘)
            return redirect(‘/index/‘)
        else:
            #登录失败
            return render(request,‘login.html‘,{‘msg‘:‘用户名或密码错误!请重新输入‘})

def index(request):
    return render(request,‘index.html‘)

urlpatterns = [
    #path(‘admin/‘, admin.site.urls),
    path(‘login/‘,login),
    path(‘index/‘,index),
]

原文地址:https://www.cnblogs.com/ethtool/p/12119756.html

时间: 2024-10-09 10:02:02

Django学习小记2-用户登录实例的相关文章

django rest_framework vue 实现用户登录

django rest_framework vue 实现用户登录 后端代码就不介绍了,可以参考  django rest_framework 实现用户登录认证 这里介绍一下前端代码,和前后端的联调过程 在components下新建login.vue 文件 <template> <div class="login"> <el-form label-width="80px"> <el-form-item label="

【MVC】Servlet+Jsp+MySql用户登录实例

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文要用Servlet+Jsp+MySql实例用户登录,并简要介绍了下MVC的思想,此例子也是按照这个思路来做的.在Eclipse+tomcat7.0上做的.不会很难,对于了解MVC思想很有帮助! 效果: 这是刚开始的界面 这是错误时的信息 这是成功时的信息 一.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(control

基于Servlet的MVC模式用户登录实例

关于MVC模式的简单解释 M Model,模型层,例如登录实例中,用于处理登录操作的类: V View,视图层,用于展示以及与用户交互.使用html.js.css.jsp.jQuery等前端技术实现: C Controller,控制器,接受视图层的请求,将请求跳转到对应的模型进行处理,模型层处理完毕后,再将结果返回给请求处.这里用Servlet实现控制器. 实现过程分析 用户再视图层输入用户名以及密码点击提交,向控制器发出请求 控制器(Servlet)接受请求,将接受到的用户名以及密码转给模型层

python学习一:用户登录

一,用户登录需求: 1,用户名,密码要保存在文件中. 2,用户可以尝试登录三次,三次之后账户锁定,用户锁定信息保存在文件中,用户输入正确重置锁定信息. 程序代码: #!/usr/bin/env python# -*- coding:utf-8 -*-username = [] #-----------------------------------------------for line in open('user.txt'): line=line.replace('\n','').split(

Pthon学习一(用户登录交互界面)

一.作业 要求:1.要有一个类似登录操作系统的用户登录的交互. 2.判断用户是否存在. 3.输入三次密码错误后,退出. 二.流程图 按照作业要求流程图如下: Python脚本如下:   1 #!/usr/bin/env python   2    3    4 import sys   5    6 user=["liyuanchuan","zhanggang","gaolixu"]   7    8 passwd={'liyuanchuan':

Servlet——简单用户登录实例+http协议解析

编写项目,用户登录系统1.0版本 登录界面Servlet: package com.gavin.view; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.ser

Jmeter服务器性能压测-用户登录实例CSV方式

为什么用CSV方式压测,因为用jdbc链接数据库,我发现数据库数据量量大的情况下,Jmeter会内存溢出 第一步:数据准备,根据登录接口需要的参数准备测试数据 例子中,测试的登录接口需要4个参数化数据 Step1:数据库直接准备够需要用到的数据,插入还是update随便喽,sql语句可以参考我的分类"sql语句" 比如我用的sqlyog,准备好数据后,导出数据 根据我图片标注,按照需要进行勾选 导出为xls文件,打开后,另存为csv文件 第二步:Jmeter脚本(已添加用户定义的变量)

Django 是如何实现用户登录和登出机制的

settings.py中间件 MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', #... 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', ) 2.Django 中间件机制 request 来

iview-admin 1.3 + django 2.0 (二) 用户登录

Iview-admin logo.vue <Alert v-show="isshow" type="error" show-icon closable> 提交错误 <span slot="desc">{{ e }} </span> </Alert> <script> import Cookies from 'js-cookie'; export default { data () { r