Django框架初探

简介: Django框架初探

Django框架

基于 Python 语言的 Web 框架有很多,Django 框架是其中应用范围最广、性能最优异、最具发展前景的一款。

当今,许多非常成功的 Web 网站和移动 App 都是基于 Django 框架开发的,如 Instagram、豆瓣等。

Django封装了好多方法,直接调用,比如socket方法。连接MySQL方法等,单独放到文件中,大大简化了开发

MVC与MTV模型

MVC

MVC就是把Web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的(随调随用)、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求。

1、MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。

T 代表模板 (Template):负责如何把页面展示给用户(html)。

V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template。

我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,

基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,

服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自己实现Web框架了。

2、Django下载

官网:https://www.djangoproject.com/download/

版本历史,LTS表示长期支持版本

linux 安装Django

pip3 install Django==4.2.1

Linux安装好后,django-admin不在环境变量,需要自己设置,不然命令无法使用

windows通过pycharm安装Django,勾选指定版本

3、创建Django项目

Django就是一个模块,通过模块提供的相关指令,来创建项目

可以通过指令来创建

django-admin startproject jingtian(项目名称)

通过指令生成项目,项目下的目录以及个文件都是自动生成的

也可以通过pycharm来生成Django项目

在pycharm中新建Django工程,file–>new project–>Django,填写相应的工程名字如下所示:

项目文件介绍

项目创建好之后,就可以运行起来了,运行命令与wsgiref一样

并打印出来,怎么访问

浏览器访问

你会发现,上面没有什么view视图函数的文件啊,这里我们说一个应用与项目的关系,上面我们只是创建了一个项目,

并没有创建应用,以微信来举例,微信是不是一个大的项目,但是微信里面是不是有很多个应用,

支付应用、聊天应用、朋友圈、小程序等这些在一定程度上都是相互独立的应用,

也就是说一个大的项目里面可以有多个应用,也就是说项目是包含应用的,

它没有将view放到这个项目目录里面是因为它觉得,一个项目里面可以有多个应用,

而每个应用都有自己这个应用的逻辑内容,所以他觉得这个view应该放到应用里面,

比如说我们的微信,刚才说了几个应用,这几个应用的逻辑能放到一起吗,放到一起是不是就乱套啦,

也不好管理和维护,所以这些应用的逻辑都分开来放,它就帮我们提炼出来了,提炼出来一个叫做应用的东西,所以我们需要来创建这个应用。

在项目里面创建应用

python manage.py startapp blog #通过执行manage.py文件来创建应用,执行这句话一定要注意,你应该在这个manage.py的文件所在目录下执行这句话,因为其他目录里面没有这个文件

python manage.py startapp blog2 #每个应用都有自己的目录,每个应用的目录下都有自己的views.py视图函数和models.py数据库操作相关的文件python manage.py startapp blog

在manager.py同级目录下创建了个应用 blog,里面有models.py和views.py。都是自动生成的

现在应用创建了,但该应用并不从属于firstDjango项目,要想该应用从属于项目,必须在项目的配置文件settings.py里面配置

找到INSTALL_APPS

把自己创建的应用名称放到该列表中,这样你创建的应用才从属于该项目

这个应用,里面的函数,才能调用settings里面的相关配置

4、通过pycharm来创建项目

其实我们将来创建django项目,很少用命令行了,就用pycharm来创建

File----New Project

在Applaction name 设置应用名,要选已存在的解释器,不要用pycharm自带的虚拟环境,否则每次创建都要重新配置环境。

其他不用变,点击create,创建项目

选在新窗口打开

新项目,新应用创建成功

而且在settings.py里面已经将应用加入到项目,点分隔路径,找的是Myapp文件夹下面的apps.py文件里面的MyappConfig类

里面返回了应用名称,相当于我们手动在settings.py那里直接写应用名称,是一样的

pycharm还会创建个templates文件件,用于存放html文件。手动指令创建的不带templates文件夹

后续我们都通过pycharm创建项目


5、视图的基本写法

from django.http import HttpResponse

def index(request):

return HttpResponse(“hello django2!!!”)

视图读取参数

url以查询字符串的方式传参,使用request.GET.get(“name”, default)的形式获取参数值

url以路径传参,使用路径转换器来进行获取参数,在django1.0版本的时候只能通过正则表达式来获取参数。

request对象的方法

request.GET:获取url中的查询字符串的数据

request.POST: 获取表单提交的数据,为字典类型

request.path:获取请求的路径

request.method:获取请求的方法get or post

request.COOKIES:获取请求过来的cookies

request.user:获取请求的用户对象,可以通过它判断用户是否登录,并获取用户信息

request.session:一个既可读又可写的类似字典的对象,表示当前会话

request.META:一个标准的Python字典,包含所有的HTTP首部。具体的头部信息取决于客户端和服务器

视图函数的常用的返回对象

HttpResponse对象,可以直接返回一些字符串

render: 将数据在模板中渲染并显示,使用方式为return render(request, template_path, {k:v})字典中key与value就是要向前端渲染出的数据。

JsonResponse返回一个json类型,通常用于与前端进行ajax交互

6、静态文件的配置

在项目根目录创建“static" 与 ”templates“ 文件夹同级

在配置文件settings中添加STATICFILES_DIRS = (os.path.join(BASE_DIR, “static”),)注意这是一个元组

静态文件的种类有:css文件,js文件,图片

django自带的模板过滤器以及如何自定义模板过滤器

自定义模板过滤器的方法:

1、在项目的应用下创建templatetags包

2、将app.templatetags写入settings中的InstallApp中注册

3、在文件夹下创建myfilter.py文件

4、在myfilter.py文件中定义如下内容

7、基于Django实现一个简单的示例

首先,先定义访问路径,在项目的urls.py里面配置,将我们创建的应用的views模块导入

1、第一个是系统自带的,下面那个是我们自己配置的,注意:views.home 这个home 必须是在应用的视图函数的函数名

2、然后配置响应页面,在templates文件夹下创建html文件,文件名没要求

3、在应用的views.py里面创建视图函数,函数名必须与在urls.py里面写的函数名

from django.shortcuts import render

#Create your views here.

#定义视图函数一定要带个参数,命名不一定叫request
#Django将environ字典加工成了wsgirequest类的对象
#Django创建了一个类,实例化一个对象传给了我们定义的视图函数
#class Wsgirequest():
#     def __init__(self):
#         self.path = environ["PATH_INFO"]
#         self.path = environ["PATH_INFO"]
#         self.path = environ["PATH_INFO"]
#         self.path = environ["PATH_INFO"]

def home(request):
    #打印请求路径
    print(request.path)
    #之前我们响应浏览器页面,需要自己打开文件,如下,现在通过Django,不用我们自己操作了
    # with open("../templates/index.html","rb") as f1:
    #     data = f1.read()

    #Django可以帮我们打开文件,第一个参数必须是request,第二个参数是文件,第三个是需要替换的页面内容,以字典的形式传参
    return render(request,'index.html')

通过render将获取的数据返回到页面显示

4、这里我们写的文件名,Django怎么能找到呢,我们需要再settings.py的TEMPLATES里面配置

默认是这样配置的

将我们的页面文件路径加进去,指给Django程序说,以后找html文件,就去templates目录下找

注意,4.2版本路径必须放到列表中,不然访问报错

错误配置案例如下,

报错,找不到文件,那是因为templates路径没找到

正确配置如下,将路径放入列表中

也可以直接这样写路径,不用拼接,直接将自己的路径名添加到BASE_DIR后面,放到列表中。更简洁

浏览器访问,按照自己配置的路径访问,大功告成

如果不添加路径,会报错,提示你那些路径可以访问

相关文章
|
18小时前
|
存储 缓存 安全
Django的会话框架提供了一种简单且安全的方式来在用户与网站之间存储和检索状态信息
【5月更文挑战第12天】Django的会话管理依赖于内置的SessionMiddleware。要启用,需在settings.py的MIDDLEWARE中包含它,并确保'django.contrib.sessions'在INSTALLED_APPS内。设置SESSION_ENGINE可选择存储引擎,如默认的数据库或缓存。在视图中,通过request.session交互会话数据。模板可以直接访问这些数据。配置包括会话超时、cookie属性和存储后端。注意,敏感数据不宜存入会话,确保会话cookie安全,考虑使用缓存降低数据库压力。
7 3
|
8天前
|
缓存 安全 API
Django框架
【5月更文挑战第5天】Django是Python的高效Web框架,适合构建各种规模的Web应用。本指南逐步介绍Django核心概念和高级特性,包括安装、创建项目和应用、视图、URL路由,以及数据库模型、管理后台、用户认证。还涉及RESTful API、缓存、性能优化、国际化、测试、异步任务、Web套件、Django Channels和定时任务。通过学习,开发者能全面掌握Django并构建高性能应用。
17 3
|
13天前
|
JSON 前端开发 网络架构
Django的web框架Django Rest_Framework精讲(四)
Django的web框架Django Rest_Framework精讲(四)
|
13天前
|
前端开发 数据库 网络架构
Django的web框架Django Rest_Framework精讲(三)
Django的web框架Django Rest_Framework精讲(三)
|
13天前
|
前端开发 数据库 数据安全/隐私保护
Django的web框架Django Rest_Framework精讲(二)
Django的web框架Django Rest_Framework精讲(二)
|
13天前
|
JSON 前端开发 数据库
Django的web框架Django Rest_Framework精讲(二)
Django的web框架Django Rest_Framework精讲(二)
|
13天前
|
JSON API 数据库
Django的web框架Django Rest_Framework精讲(一)
Django的web框架Django Rest_Framework精讲(一)
|
14天前
|
Oracle 关系型数据库 MySQL
Django框架ORM操作(二)
Django框架ORM操作(二)
|
14天前
|
SQL 存储 前端开发
Django框架ORM操作(一)
Django框架ORM操作(一)
Django框架ORM操作(一)
|
14天前
|
前端开发 JavaScript 程序员
Django前置知识--手撕框架(二)
Django前置知识--手撕框架(二)