2020-10-20DJango_day3

GET方式的登陆

login.html文件中存在一个form表单:

<form action="/student/login/" method="get">
        <p>
            <label>用户名: </label><input type="text" name="uname"/>
        </p>
        <p>
            <label>&emsp;码: </label><input type="password" name="pwd"/>
        </p>
        <p>
            &emsp;&emsp;&emsp;&emsp;<input type="submit" value="登陆"/>
        </p>
    </form>
在action=""中添加一个地址,指向登陆时,form表单提交的地址。
/student/login/就是一个地址。 #在student前面加/表示每次提交只给一次,没有话就是多次
  • 这时,我们还没有student/login/,所以我们需要去根路由/student下,添加一个/login,
# stu/urls.py
#coding=utf-8

from django.urls import path
from . import views
urlpatterns = [
    path('',views.index_views),
    path('login/',views.login_views), #子路由的urls下添加一行,且在views.py中添加login_views函数
]

# stu/views.py
from django.shortcuts import render
from django.http import HttpResponse
# 渲染登陆页面
def index_views(request):

    return  render(request,'login.html')
def login_views(request):
    # 接收表单请求参数
    uname = request.GET.get('uname','')
    pwd = request.GET.get('pwd','')

    # 判断是否成功
    if uname=='zhangsan' and pwd == '123':
        return HttpResponse("登陆成功")

    return HttpResponse('登陆失败')

post方式的登陆

将html中的form表单的method,get改成post

<form action="/student/login/" method="post">
        <p>
            <label>用户名: </label><input type="text" name="uname"/>
        </p>
        <p>
            <label>&emsp;码: </label><input type="password" name="pwd"/>
        </p>
        <p>
            &emsp;&emsp;&emsp;&emsp;<input type="submit" value="登陆"/>
        </p>
    </form>

在views.py中将GET改成POST

# stu/views.py
from django.shortcuts import render
from django.http import HttpResponse
# 渲染登陆页面
def index_views(request):

    return  render(request,'login.html')
def login_views(request):
    # 接收表单请求参数
    uname = request.POST.get('uname','')
    pwd = request.POST.get('pwd','')

    # 判断是否成功
    if uname=='zhangsan' and pwd == '123':
        return HttpResponse("登陆成功")

    return HttpResponse('登陆失败')
但是直接使用post方式登陆,页面会报错,解决方法有两个
  • 将settings.py中的 … 这一行注释掉
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    #'django.middleware.csrf.CsrfViewMiddleware', #这一行注释掉
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
  • 在html中form表单中添加一行:
<form action="/student/login/" method="get">
		{% csrf_token %}  	/* 增加这一行 */
        <p>
            <label>用户名: </label><input type="text" name="uname"/>
        </p>
        <p>
            <label>&emsp;码: </label><input type="password" name="pwd"/>
        </p>
        <p>
            &emsp;&emsp;&emsp;&emsp;<input type="submit" value="登陆"/>
        </p>
    </form>

就可以以post方式来访问页面了

四种get方式的请求:
  1. 在html中,添加a标签,<a href="/student/login/?uname=lisi&pwd=123"> 显示登陆首页 </a>
  2. 在html加一段js代码:
<input type="button" onclick="test()" value="get请求">
    <script>

        function test(){
            window.location.href='/student/login?uname=zhangsan&pwd=123';
        }

    </script>
  1. 在form表单中method方法使用get方法

  2. 浏览器地址栏中,直接输入。

     一种post方式:
    
  • from表单中使用method=‘post’
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值