GET方式的登陆
login.html文件中存在一个form表单:
<form action="/student/login/" method="get">
<p>
<label>用户名: </label><input type="text" name="uname"/>
</p>
<p>
<label>密 码: </label><input type="password" name="pwd"/>
</p>
<p>
    <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>密 码: </label><input type="password" name="pwd"/>
</p>
<p>
    <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>密 码: </label><input type="password" name="pwd"/>
</p>
<p>
    <input type="submit" value="登陆"/>
</p>
</form>
就可以以post方式来访问页面了
四种get方式的请求:
- 在html中,添加a标签,
<a href="/student/login/?uname=lisi&pwd=123"> 显示登陆首页 </a>
- 在html加一段js代码:
<input type="button" onclick="test()" value="get请求">
<script>
function test(){
window.location.href='/student/login?uname=zhangsan&pwd=123';
}
</script>
-
在form表单中method方法使用get方法
-
浏览器地址栏中,直接输入。
一种post方式:
- from表单中使用method=‘post’