python_Django简单的登录页面

作者: 两点半的杂货铺 | 来源:发表于2017-11-27 21:53 被阅读152次

一、命题

是做一个有技术的黑盒测试,还是做一个黑盒测试,这个是一个为了带Django初学者更容易认识这个框架的小例子

1.1伪造响应信息

image.png

浏览器运行结果


image.png

二、创建

根据Django的MTV 模式,我们先输入指令创建
app :python manage.py startapp cmdb
这里的app意思就是程序模块
如图我们创建的一个基础框架


image.png

获取更多的返回信息request.environ

 for k,v in request.environ.items():
        print(k,v)
image.png

三、编写

在templates 文件下创建 login.html,写一个表单提交

<form action="login" method="post">
    <table>
        <tr>
            <td><label for="user">用户名</label></td>
            <td><input type="text" name="user" id="user"></td>
        </tr>
        <tr>
            <td><label for="pwd">密码</label></td>
            <td><input type="password" name="pwd" id="pwd"></td>
            <span style="background: red"></span>
        </tr>
        <tr>
            <td ><input type="submit" value="提交"></td>
        </tr>
    </table>
</form>

我们现在J_Login文件下的urls.py,写上url的条件映射对应的处理函数

#引入逻辑处理模块
from  cmdb import  views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #创建映射关系
    url(r'^login', views.login),
]

ulr的映射我们写好后,开始写用户提交到页面的代码逻辑处理,也就是在我们创建app模块下 views里面写。这里的app模块指的是cmdb

from django.shortcuts import HttpResponse
from  django.shortcuts import  redirect

#创建url对应的函数映射
def login(request):
    #判断是否是POST 返回
    if request.method == 'POST':
        #接受 html name 是user和pwd的标签
        user = request.POST.get('user',None)
        pwd = request.POST.get('pwd', None)
        if user =='123' and pwd=='123' :
            #重定向百度
            return redirect('https://www.baidu.com')
        
    #去读index,通过HTTpResponse 方法返回文件内容
    with open('templates/index.html', 'rb' ) as f:
        data =f.read()
        f.close()
        return  HttpResponse(data)

上面的这种方式只是为了让我们更加理解,工作原理,通过文件的读取,在页面展示对应的读取html,但实际生产生活中我们会用到下面这种,而不是用io来读取展示 request.POST.get可以理解,去html找name名的标签属性{‘name’:‘user’}

下面是实际生产生活的写法:
我们先在我们的提交表单的html加上一句话用{{}} 双大括号 上

            <span style="background: red">{{ msg }}</span>

改动我们的view

from django.shortcuts import render
from  django.shortcuts import  redirect

#创建url对应的函数映射
def login(request):

    msg = ''
    #判断是否是POST 返回
    if request.method == 'POST':
        #接受 html name 是user和pwd的标签
        user = request.POST.get('user',None)
        pwd = request.POST.get('pwd', None)
        if user =='123' and pwd=='123' :
            #重定向百度
            return redirect('https://www.baidu.com')
        else:
            msg = '用户名密码错'
            return render(request, 'index.html',{'msg':msg})

    #去读index.html
    return render(request,'index.html',{'msg':msg})

之前我们用HttpResponse,通过文件的读写返回,这把我们用render方法直接返回对应页面,而且render方法中,可用字典的方式向页面返回我们提前用双大括号在页面做好的标记位置返回值,但这个前提是我们在settings.py 的设置文件做了设置


image.png

四、提升

光写一个没有数据库的登录没意思,我们在写一个页面,可以进行不通过数据库的假数据用户添加
我们在templates 文件夹下创建一个home.html

<form action="home" method="post">
    <input type="text" name='user' placeholder="用户名">
    <input type="text" name="pwd" placeholder="密码">
    <input type="submit">
</form>
{% for infos in user_info %}
<table>
    <tr>
        <td>用户名</td>
        <td>{{ infos.u}}</td>
    </tr>
    <tr>
        <td>密码</td>
        <td>{{infos.p}}</td>
    </tr>
</table>
{% endfor %}

在urls做关系映射

rom  cmdb import  views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #创建映射关系
    url(r'^login', views.login),
    url(r'^home', views.home),
]

编写home方法的代码

USER_LIST =[{'user':'w','pwd':'123'}]
def home(request):
    if request.method == 'POST':
       u = request.POST.get('user',None)
       p = request.POST.get('pwd',None)
       temp = {'user':u, 'pwd':p}
       USER_LIST.append(temp)
#返回字典在页面展示
    return render(request,'home.html',{'user_List':USER_LIST})

(二)、字典传值
view 层

USER_DICT={
        'k1':'v1',
        'k2':'v2',
    }

def test(request):
    return render(request,'test.html',{'user_dict':USER_DICT})

templates 模块

 <ul>
    <!-字典.k 打印出来的是value->
    {{ user_dict.k1 }}
        <!-字典.value 字典.key 字典.items->
        {% for k,v in user_dict.items %}
            <li>
                {{ k }}-{{v}}
            </li>
        {% endfor %}
    </ul>

字典的循环方法 跟python 一样有value , key, items

相关文章

  • python_Django简单的登录页面

    一、命题 是做一个有技术的黑盒测试,还是做一个黑盒测试,这个是一个为了带Django初学者更容易认识这个框架的小例...

  • 2019-07-18

    我的简单的登录注册页面练习1.登录页面 登录页面练习 2.注册页面

  • 简单登录页面

    第一个实例,Axure中的“Hello Wold”,百度账号登录页面,还没完善,交互设计还没有,总结如下: 1,很...

  • 2、用户登录

    目标 登录页面开发 后台登录程序 登录页面开发 简单首页Index.vue index.js 配置路由 注意:登录...

  • SpringSecurity个性化用户认证流程

    一、自定义登录页面 我们不能每次都去使用SpringSecurity默认的很简单的登录页面样式去进行登录,需要我们...

  • ThinkPhp5小博客四 -----登录功能简单实现

    上次已经能够简单的打开页面,并且加入了登录的校验,没有登录态会自动跳到登录页面,这次加入数据库,真正实现登录功能。...

  • VUE简单登录页面

    登录页面:一:APP.vue根路由存放登录前后两个页面路由实...

  • RxJava处理复杂表单验证问题

    无论是简单的登录页面,还是复杂的订单提交页面,表单的前端验证(比如登录名和密码都符合基本要求才能点亮登录按钮)都是...

  • React项目框架搭建(CRA版本搭建)二

    第二章:登录页面以及token存取 创建登录页面Login 我这边简单复制下antd示例过来 我们在根目录下的in...

  • 简单的登录静态页面总结

    1.模糊背景图的设置 设置两个div,一个放置背景图片,一个放置内容 放置背景图片 放置内容 设置css样式 .o...

网友评论

    本文标题:python_Django简单的登录页面

    本文链接:https://www.haomeiwen.com/subject/yqzcbxtx.html