作者主页:编程指南针
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师
主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助
收藏点赞不迷路 关注作者有好处
文末获取源码
Python框架之Django Web框架的使用
本章节主要介绍Django Web框架的应用。主要通过一个快速入门案例来演示Django如何安装配置,如何创建项目,完成视图和路由的配置,实现页面模板文件的创建和请求数据的获取以及响应等。
一,Django Web入门
可以使用 pip在线安装Django:
pip install django
Django框架的结构图:采用了MTV的框架模式,即模型M,视图V和模版T。
Django 框架的核心组件有:
-
用于创建模型的对象关系映射;
-
为最终用户设计较好的管理界面;
-
URL 设计;
-
设计者友好的模板语言;
-
缓存系统。
Django已经成为web开发者的首选框架,是一个遵循 MVC 设计模式的框架。MVC是Model、View、Controller三个单词的简写,分别代表模型、视图、控制器。Django其实也是一个MTV 的设计模式。
MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图 。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
层次 | 职责 |
---|---|
模型(Model),即数据存取层 | 处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。 |
模板(Template),即表现层 | 处理与表现相关的决定:如何在页面或其他类型文档中进行显示。 |
视图(View),即业务逻辑层 | 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。 |
Django的整体请求响应的流程图如下所示:
创建Django项目:
1.创建并激活虚拟环境
cd D:\djangotest #自己创建空文件夹存放项目
python -m venv djangoenv #创建虚拟环境
运行以下命令,激活虚拟环境
cd D:\djangotest djangoenv\Scripts\activate #激活虚拟环境
2.安装django模块
#1激活虚拟环境 cd D:\djangotest djangoenv\Scripts\activate #2安装django模块 pip install Django #激活虚拟环境后安装Django模块
上述命令执行后,会把Django模块,安装到了djangoenv/Lib/site-packages 下,也就是说,此Django模块仅仅在虚拟环境中,而不是安装在Python全 局环境。
3.创建djano项目
安装了Django之后,我们就可以使用Django的管理工具------>django-admin了
我们创建一个名称为demo的Django项目,命令如下:
#1激活虚拟环境 cd D:\djangotest djangoenv\Scripts\activate #2创建一个loginweb的项目 django-admin startproject demo 或者 python -m django startproject demo
此命令执行后,会在djenv的同级目录,创建一个名称demo的Django 项目。目录结构如下图所示:
外层的demo目录:是项目的容器,Django不关心它的名字,我 们可以将它重命名为任何我们喜欢的名字 里面的demo目录:它是一个纯python包。我们可以称呼它为项目的名称,不能随意重命名 manage.py :它是Django的一个非常重要的工具,通过它可以调用 django shell和数据库等,如:创建app应用程序、创建数据库表、清 空数据、启动项目等操作 settings.py :Django 项目的配置文件。包含了项目的默认设置,包 括数据库信息,调试标志以及其他一些工作的变量 urls.py :Django 项目的URL路由声明,负责把URL模式映射到应用 程序 wsgi.py:Web服务器网关接口(Python Web Server Gateway Interface的缩写),Python应用和Web服务器之间的一种接口,可以 看成是一种协议、规范。它是基于Http协议的,不支持WebSoket asgi.py:异步网关协议接口,能够处理多种通用的协议类型,包括 HTTP,HTTP2和WebSocket,可以看成ASGI是WSGI的扩展
也可以使用IDEA直接创建Django项目:
在IDEA中创建新项目时选择Django即可。
开发登录功能:
1.创建登录应用:一般一个项目包含多个app应用程序(当然,通用的app也可以在多个项目中使用) 下面我们为loginweb项目,创建login。
#1进入工程根目录 cd D:\djangotest #激活虚拟环境 djangoenv\Scripts\activate #2切到django项目中 cd demo #3创建一个叫login的应用 django-admin startapp login
上述命令执行后,目录结构如下图所示
创建的每一个app就相当于系统的一个模块,其目录的作用如下:
2.注册app
app应用程序创建以后,必须把app注册到Django,才能够被Django项目所管理。我们只需要把login应用的名称,配置到 demo/settings.py文件中即可。如下图所示:
3.修改view.py视图文件
Django视图的作用:用于接受Web请求并且返回Web响应的简单Python 函数。该函数一般定义在各自应用的views.py文件中。在视图函数中,有 两个重要的对象:请求对象和响应对象。
下面是一个最简单的视图函数:
# 例:在login/views.py 中 from django.http import HttpResponse # Create your views here. def login(request): return HttpResponse("登录页面")
其中:request参数为必填参数,代表用户的请求,它是HttpRequest对象
4.添加路由
Django的路由定义文件为:项目目录urls.py文件。我们所有的路由配置,都以列表的方式,定义在urls.py文件中,添加我们想要的路由。
# 例:demo/urls.py 中 from django.contrib import admin from django.urls import path from login import views urlpatterns = [ path("admin/", admin.site.urls), path("login/",views.login) ]
5.启动django项目
在开发环境下,我们需要在本地启动Django项目,来开发与调试我们的代 码。启动Django项目命令如下:
python manage.py runserver [port] #[port] 为应用访问端口,可以缺省不写,默认为8000。
访问我们定义的路由地址:
6.添加前端登录相关页面
在login底下新写建一个templates目录,存放编写的html前端页面
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
<style>
body{
text-align:center;
}
</style>
</head>
<body>
<form action="/login/" method="post">
{% csrf_token %}
<h1 align="center">登录页面</h1>
<p class="divs">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" align="center">
</p>
<p class="divs">
   <label for="password">密码:</label>
<input type="password" id="password" name="password">
</p>
<input type="submit" value="登录">
<span style="color:red">{{ error }}</span>
</form>
</body>
</html>
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>这里是主页</title>
<style>
h1 { color:red }
</style>
</head>
<body>
<h1>这里是主页</h1>
</body>
</html>
修改视图组件views.py
from django.shortcuts import render,redirect
# Create your views here.
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
passowrd = request.POST.get('password')
if username=='znz' and passowrd =='123456':
return redirect('/index')
else:
return render(request,'login.html',{"error":"用户名或密码错误"})
return render(request,'login.html')
def index(request):
return render(request,'index.html')
修改路由组件urls.py
from django.contrib import admin
from django.urls import path
from login import views
urlpatterns = [
path("admin/", admin.site.urls),
path("login/",views.login),
path("index/",views.index)
]
启动项目:
python manage.py runserver [port] #[port] 为应用访问端口,可以缺省不写,默认为8000。
输入错误账户密码:
输入正确账户密码登录:
快速入门案例主要是通过一个简易的登录功能来带领大家直观的感受一下Django的开发步骤,里面涉及到的相关技术和组件并未详细讲解,下面我们就来讲解一下项目中涉及到的模板语法、请求、响应以及如何结合MySQL数据库完成真正的用户登录和数据管理。