大家好,我是csdn的博主:lqj_本人
这是我的个人博客主页:
lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm=1011.2415.3001.5343哔哩哔哩欢迎关注:小淼Develop
小淼Develop的个人空间-小淼Develop个人主页-哔哩哔哩视频
本篇文章主要讲述:快速上手,pythonweb开发Django框架
目录
Django框架
工作机制
获取请求方式
GET/POST方式
URL路由传值
【响应】HttpResponse
【响应】读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器。
重定向路由
文末小案例(用户登录简单案例)
login.html:
url_lqj.html(默认生成模板)
urls.py文件注册路由:
views.py文件函数代码:
Django框架
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛手Django Reinhardt来命名的。Django是高水准的Python编程语言驱动的一个开源模型.视图,控制器风格的Web应用程序框架,它起源于开源社区。使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。这也正是OpenStack的Horizon组件采用这种架构进行设计的主要原因。另外,在Dj ango框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性 [2] 。Django 项目源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。
工作机制
获取请求方式
GET/POST方式
这里我就以GET请求方式为例:
在templates文件夹里创建一个url_lqj.html文件。
并在urls.py注册页面路由:
path('login/', views.login)
views.py文件中的函数:
def url_lqj(request):
print(request.method)
URL路由传值
基于上面的演示,在views.py文件中的函数,修改为:
def url_lqj(request):
print(request.GET)
return render(request,'url_lqj.html')
【响应】HttpResponse
说明:(“返回内容”),内容字符串返回给请求者。
基于上面的演示,在views.py文件中的函数,修改为:
def url_lqj(request):
return HttpResponse("返回内容")
【响应】读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器。
基于上面的演示,在views.py文件中的函数,修改为:
def url_lqj(request):
return render(request,'url_lqj.html',{"title":"来了"})
基于上面的演示,在url_lqj.html文件中的函数,修改为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>url_lqj</title>
</head>
<body>
<h1>某些请求{{ title }}</h1>
</body>
</html>
重定向路由
让浏览器重定向到其他的页面
基于上面的演示,在views.py文件中的函数,修改为:
def url_lqj(request):
return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")
效果:当我们在浏览器输入我们写的路由,Django会利用该重定向给我们跳转到上当的地址(这里的地址是我的CSDN主页地址)
文末小案例(用户登录简单案例)
login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div style="margin-top: 100px;display: flex;flex-direction: row;justify-content: space-around">
<h1 style="color: orange">CSDN用户登录</h1>
</div>
<div style="margin-top: 100px;display: flex;flex-direction: row;justify-content: space-around">
<form method="post" action="/login/">
{% csrf_token %}
<input placeholder="请输入用户名" name="admin" type="text" >
<input placeholder="请输入密码" name="pwd" type="text" >
<input type="submit" value="登录" />
</form>
</div>
<div style="display: flex;flex-direction: row;justify-content: space-around;margin-top: 100px">
<div>{{ tishi_1 }}</div>
</div>
</body>
</html>
url_lqj.html(默认生成模板)
urls.py文件注册路由:
from django.urls import path
from app01 import views
urlpatterns = [
# path('admin/', admin.site.urls),
# path('index/', views.index),
#联通新闻中心
# path('news/', views.news),
path('url_lqj/', views.url_lqj),
path('login/', views.login)
]
views.py文件函数代码:
说明:
def login(request): if request.method == "GET": return render(request, "login.html") else: print(request.POST) username = request.POST.get("admin") userpwd = request.POST.get("pwd") if username == 'lqj' and userpwd == '123': return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343") else: tishi ="账号或密码错误" return render(request, "login.html",{"tishi_1":tishi})上面代码:
1.使用request.method返回用户访问时的请求方式,判断并进入相应前端路由
2.如果判断对,进入login.html页面
3.否则,获取用户post的数据(表单中提交的数据)
4.判断用户输入的账号和密码是否与设置的一致
5.一致,则重定向页面为:
https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.53436.不一致,携带tihsi中的字符串,返回给login.html文件
from django.shortcuts import render, HttpResponse, redirect
def url_lqj(request):
# request是一个对象,封装了用户发送过来的所有请求的数据
# 获取请求方式 GET/POST
# print(request.method)
# 在URL上传递的值,比如:url_lqj/lqj=123&qqq=123
# print(request.GET)
# 4.【响应】HttpResponse(“返回内容”),内容字符串返回给请求者。
# return HttpResponse("返回内容")
# 5.【响应】读取HTML的内容 + 渲染(替换) -> 字符串,返回给用户浏览器。
# return render(request,'url_lqj.html',{"title":"来了"})
# 6.让浏览器重定向到其他的页面
return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")
def login(request):
if request.method == "GET":
return render(request, "login.html")
else:
print(request.POST)
username = request.POST.get("admin")
userpwd = request.POST.get("pwd")
if username == 'lqj' and userpwd == '123':
return redirect("https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343")
else:
tishi ="账号或密码错误"
return render(request, "login.html",{"tishi_1":tishi})
案例效果:
用户名或密码错误时:
用户名或密码正确时:
随后重定向成功: