Django 系列博客(三)
程序员文章站
2022-03-16 22:59:36
Django 系列博客(三) 前言 本篇博客介绍 django 的前后端交互及如何处理 get 请求和 post 请求。 get 请求 get请求是单纯的请求一个页面资源,一般不建议进行账号信息的传输。 配置路由 配置视图 配置页面资源 post 请求 配置路由 配置视图 配置页面资源 前后端交互 ......
django 系列博客(三)
前言
本篇博客介绍 django 的前后端交互及如何处理 get 请求和 post 请求。
get 请求
get请求是单纯的请求一个页面资源,一般不建议进行账号信息的传输。
配置路由
from django.conf.urls import url from django.contrib import admin import app.views as app_views import newapp.views as new_views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$', app_views.home), # 路由采用正则匹配, ^以什么开头 $以什么结果 # 注: 当路由没有子路由是,才在末尾添加$ url(r'^index/$', app_views.index), url(r'login', app_views.login_action), url(r'^new/index/$', new_views.index) ]
配置视图
from django.shortcuts import render, redirect from django.http import httpresponse # create your views here. # 每一个请求,都对应一个视图响应函数,来出现请求,完成响应 # def index(abc): # return httpresponse('hello django') # 第一个响应 import django.core.handlers.wsgi def login_action(request): return render(request, 'login.html') # 第一个响应页面 # def home(request): # return redirect('/index/') # 第一个重定向 def home(request): return render(request, 'index.html') def index(request): return redirect('/')
配置页面资源
<!doctype html> <html> <head> <meta charset="utf-8"> <title>主页</title> </head> <body> <h1 style="text-align: center">app的主页</h1> </body> </html>
<!doctype html> <html> <head> <meta charset="utf-8"> <title>登录</title> </head> <body> <h1 style="color: red">登录</h1> </body> </html>
post 请求
配置路由
from django.conf.urls import url from django.contrib import admin from app import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$', views.home), url(r'^index/$', views.index), url(r'^login/$', views.login, name='lg'), ]
配置视图
from django.shortcuts import render, redirect import pymysql # create your views here. def home(request): return render(request, 'index.html') def index(request): return redirect('/') ''' def login(request): print(request.method) # 如果获取get请求的提交数据 # import django.core.handlers.wsgi # print(type(request)) # import django.http.request.querydict # print(type(request.get)) print(request.get) # usr = request.get['usr'] # 不安全 usr = request.get.get('usr', 'usr') # 安全, 第一个参数为数据的key, 第二个参数为默认值 print(usr) pwd = request.get.get('pwd') # 不设默认值,没有取到值时,返回值为none print(pwd) return render(request, 'login.html') ''' from django.http import httpresponse def login(request): if request.method == 'get': stus = request.get.getlist('stu') print(stus) return render(request, 'login.html') # 没有get分支, 发来的请求为post usr = request.post.get('usr') pwd = request.post.get('pwd') print(usr, pwd) # 连接数据库 => orm conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', db='django') cur = conn.cursor(pymysql.cursors.dictcursor) # cur.execute('select * from user') # users = cur.fetchall() cur.execute('select * from user where usr=%s and pwd=%s', [usr, pwd]) res = cur.fetchone() print(res) if res != none: return httpresponse('登录成功') return httpresponse('登录失败')
配置页面资源
<!doctype html> <html> <head> <meta charset="utf-8"> <title>主页</title> {# <link rel="stylesheet" href="./index.css">#} {# <link rel="stylesheet" href="/static/index.css">#} {# <link rel="stylesheet" href="/static/temp.css">#} {# <link rel="stylesheet" href="/ooo/index.css">#} {# <link rel="stylesheet" href="/ooo/temp.css">#} {# <link rel="stylesheet" href="/static/css/test.css">#} <link rel="stylesheet" href="/static/css/index.css"> </head> <body> <h1 style="text-align: center">主页</h1> <img src="/static/img/001.png" alt=""> </body> </html>
<!doctype html> <html> <head> <meta charset="utf-8"> <title>登录</title> <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"> <style> .box { border: 1px solid #ccc; padding: 20px; border-radius: 20px; height: 380px; } </style> </head> <body> {#<button class="btn btn-warning"> 按钮</button>#} {#<div class="btn-group">#} {# <button class="btn btn-default btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true"#} {# aria-expanded="false">#} {# large button <span class="caret"></span>#} {# </button>#} {# <ul class="dropdown-menu">#} {# <li><a href="#">action</a></li>#} {# <li><a href="#">another action</a></li>#} {# <li><a href="#">something else here</a></li>#} {# <li role="separator" class="divider"></li>#} {# <li><a href="#">separated link</a></li>#} {# </ul>#} {#</div>#} <div class="container"> <div class="box row col-sm-6 col-sm-offset-3"> {# action: 没写 | http://localhost:8801/login | /login/ | {% url 'url_name' %} #} <form action="{% url 'lg' %}" method="get"> {# {% csrf_token %}#} <div class="form-group"> <label for="usr">用户名:</label> <input type="text" class="form-control" name="usr" id="usr" placeholder="请输入用户名"> </div> <div class="form-group"> <label for="pwd">password</label> <input type="password" class="form-control" name="pwd" id="pwd" placeholder="请输入密码"> </div> <div class="checkbox"> <label> <input name="stu" type="checkbox" value="stu1"> 学生1 </label> <label> <input name="stu" type="checkbox" value="stu2"> 学生2 </label> <label> <input name="stu" type="checkbox" value="stu3"> 学生3 </label> </div> <button type="submit" class="btn btn-info pull-right">登录</button> </form> </div> </div> {#<a href="/index/">前往主页</a>#} </body> <script src="/static/bootstrap-3.3.7-dist/js/jquery-3.3.1.js"></script> <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.js"></script> </html>
前后端交互
django请求生命周期
上一篇: 儿童节就到了,搞笑也到了
推荐阅读
-
P40系列有三款?华为或推大屏版本P40 Plus
-
三星申请超感光度专利 或将用于三星Galaxy S20系列改善夜景效果
-
ASP.NET Core 2.2 WebApi 系列【三】AutoFac 仓储接口的依赖注入
-
金邦发布EVO X II系列内存:专为AMD三代锐龙优化
-
三星中国区总裁表示S10系列后期将解锁25W快充与超级夜景功能
-
MacBook系列用户吐槽:苹果第三代蝶形键盘也开始出问题
-
NZXT推三款E系列新电源:全数通过80 Plus Gold认证
-
MarTech观察系列之三|跨越营销与技术的鸿沟
-
Django 笔记(三)模版路径 ~ 静态引用
-
三星Galaxy Note 10系列漫威保护壳曝光:四款可选