Django get与post项目实战


文章目录

  • 前言
  • 一、创建Django项目
  • 二、实现get请求
    • 1.设置根路由
    • 2.设置子应用中的路由
    • 3.访问登录页
    • 4.发起get请求
  • 三、实现post请求
    • 1.前端代码 login.html
    • 2.post请求,中间件防止跨站攻击
    • 3.后台post请求


前言

简单的实现get与post项目实战


一、创建Django项目

1-1前提是安装Django(版本号:2.2.15) : pip install Django==2.2.15;
1-2创建项目的时候选择Django,编写存放路径及python版本
1-3设置pycharme中的设置,选择Django中的版本
1-4创建子应用 python manage.py startapp 应用名
1-5去setting中设置添加应用名
1-6启动项目,确保没有问题
1-7根路由设置
1-8子应用中设置应用路由
1-9创建应用函数

二、实现get请求

1.设置根路由

代码如下(示例):

from django.contrib import admin
from django.urls import path, include,re_path

from APPS import progects_views

# 根路由:可以指向一个函数,也可以指向一个应用(此处是指向一个应用)
urlpatterns = [
    path('admin/', admin.site.urls),
    # path('progects/',progects_views.login_view),  #通过函数
    re_path('^students/',include('progects.urls')),  #通过子应用

]

2.设置子应用中的路由

代码如下(示例):

from django.urls import path, re_path
from progects import views

urlpatterns = [
    re_path('^$', views.login_view),
    re_path('^loginget/',views.login_get),
    re_path('^loginpost',views.login_post)
]

alt + enter自动可以生成函数

3.访问登录页

url: http://127.0.0.1:8000/students/
子应用中views.py代码如下(示例):

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
# 函数或者类的视图
def login_view(request):
    # return HttpResponse('返回一个前端页面渲染')
    return render(request,'login.html')

前端login.html代码如下(示例):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
{# action 从根路径开始写#}
<form action="/students/loginget/" method="get">

    <p>
        <label>用户名:</label><input type="text" name="usename">
    </p>

    <p>
        <label>密码:</label><input type="password" name="pwd">
    </p>

    <p>
        <input type="submit" value="登录">
    </p>

</form>
</body>
</html>

4.发起get请求

url:http://127.0.0.1:8000/students/loginget/?usename=zhangsan&pwd=123
提交用户名及密码实际是采用的get请求提交,信息会在地址中进行(?)拼接
子应用中views.py代码如下(示例):

def login_get(request):
    uname = request.GET.get('usename','')
    pwd = request.GET.get('pwd','')

    if uname == 'zhangsan' and pwd =='123':
        return HttpResponse("登录成功")
    return HttpResponse("登录失败")
# 表单请求地址  ? 拼接请求参数
# 所有的搜索引擎的时候,都是使用的get,存在缓存至本地,下次再访问的时候速度快

三、实现post请求

url:http://127.0.0.1:8000/students/loginpost/
提交表单信息,具体的用户名密码信息,不在地址中体现;

1.前端代码 login.html

与get请求中前端略有修改

代码如下(示例):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面_post</title>
</head>
<body>
{# action 从根路径开始写#}
<form action="/students/loginpost/" method="post">
{#    方式一:setting中隐藏掉中间件部分#}
{#    方式二:解开中间件,隐藏域#}
{#    {% csrf_token %}#}
    <p>
        <label>用户名:</label><input type="text" name="usename">
    </p>

    <p>
        <label>密码:</label><input type="password" name="pwd">
    </p>

    <p>
        <input type="submit" value="登录">
    </p>

</form>


</body>
</html>

2.post请求,中间件防止跨站攻击

setting中注释代码如下(示例):

# 中间件
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',
]

3.后台post请求

代码如下(示例):

def login_view(request):
    # return HttpResponse('返回一个前端页面渲染')
    return render(request,'login.html')
    
def login_post(request):
    uname = request.POST.get('usename','')
    pwd = request.POST.get('pwd','')
    if uname == 'zhangsan' and pwd =='123':
        return HttpResponse("登录成功")
    return HttpResponse("登录失败")


你可能感兴趣的:(django,python,中间件,post)