15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > Django快速入门 (1) -- 学会搭建web站点及业务框架

Django快速入门 (1) -- 学会搭建web站点及业务框架

时间:2023-07-14 00:27:02 | 来源:网站运营

时间:2023-07-14 00:27:02 来源:网站运营

Django快速入门 (1) -- 学会搭建web站点及业务框架:在web框架方面,python提供的选择主要包括django,flask,fastapi,torndo等方案。我们看到所有介绍基于python的web框架中django都排在第一位,说明该框架在pythoner心中的地位。虽然前面我介绍过flask框架,几乎主要一天就可以快速上手搭建出来web站点,因为它是轻量级的,没有太多负担,但很明显对于web站点而已,除了前端提供显示外,还需要一个强大的后台管理模块。显然flask无法提供,如果使用flask,我们还需要自行搭建后端管理模块,突然多出了很多工作。不过也不用过于担心,毕竟大部分的web开发都是需要前后端分开搭建。那django为啥能排第一呢?其中一个很重要的原因就是django在安装之后自动帮着搭建了一个后台管理入口,而且相应的各种增删改差等都封装内置了。当然Django还有许多其他说不完的优点,如果你喜欢并习惯使用它的话。

有关Django的教程网络资源有很多,我想你如果是完全新手,学习Django的路线还是有点陡峭的,不如先看看轻量级的Flask,有兴趣可以去看我写的入门实践文章:

学习Django需要的基础包括:(1)基础的python应用和HTML技术;(2)MVC(模型、视图、控制器)概念,三个部件各负其责,但又互相依赖;(3)数据库基础技术,django提供了后端管理,就涉及到许多数据库相关基础技术;(4)一些基础的session、鉴权技术。

  1. 有关Django介绍
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件,并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。2019年12月2日,Django 3. 0发布,也就是最新版本为3.0.

工作模式菜鸟教程文档写的非常清楚,这里引用一下:

工作流程图里包括四部分,控制器一般是核心层,不过在django里控制器仅仅负责了url的路由,也就是定义访问路径;视图层干了许多控制器层应该干的活,视图层除了要读取模型层的数据外,还需要将数据传递给模板渲染显示;模型层就是直接与数据库打交道,负责读写操作;模板层一般就是静态html和相关资源文件。在django里都有这些层专有命名。

2. 入门第一步:安装Django

与其它库一样,我们可以直接使用pip方式来安装django。

pip install django如果遇到速度比较慢的状况,可以加入国内阿里云镜像站点来安装:

pip install -i https://mirrors.aliyun.com/pypi/simple django鉴于目前pycharm在python程序开发中的欢迎程度,我们可以下载一个社区版的pycharm安装到本地,然后用于开发python程序。

如果使用pycharm,就先新建一个python项目,如本次将其命名为djangoProj。pycharm在新建项目的过程中就默认使用了虚拟环境,也就是每个python项目之间环境是互相隔离的,这样来保证各种第三方库在该项目开发使用时的独立地位,便于后续的移植和管理。不过这样做的缺点在于,如果使用的第三方库很多,会导致项目体积越来越大。

创建了djangoProj项目后,在项目目录下就有env目录,那就是虚拟环境目录。叙述这么多,主要时为了说明使用pycharm来开发django项目的过程。

然后在pyCharm的项目Terminal终端窗口执行pip来完成django库的安装。

(venv) E:/cao/djangoProj>pip install djangoCollecting django Using cached Django-3.0.7-py3-none-any.whl (7.5 MB)Collecting sqlparse>=0.2.2 Using cached sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)Collecting asgiref~=3.2 Using cached asgiref-3.2.7-py2.py3-none-any.whl (19 kB)Collecting pytz Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)Installing collected packages: sqlparse, asgiref, pytz, djangoSuccessfully installed asgiref-3.2.7 django-3.0.7 pytz-2020.1 sqlparse-0.3.1安装成功后,django库默认会存放到env目录的site-packages里。

3. 入门第二步:创建django站点

第二步中我们创建了一个djangoProj目录,这里我们权且将起称之为包含django项目的文件夹好了,因为后续的django开发都是在该目录下。

django有一套自己搭建站点的步骤和过程,可以使用django-admin脚本来创建站点及其站点下的各个模块,这里的站点对应到django里名称为project,站点下的各个模块对应到django里名称为app应用。

首先我们来创建一个站点,操作时需要继续使用djangoProj项目的terminal窗口,此时执行django-admin startproject 站点名:

(venv) E:/cao/djangoProj>django-admin startproject myblog这里我创建了一个名为myblog的站点名。创建完成后,此时回到djangoProj目录下就发现了多了一个myblog文件夹,同时里面还自动创建一个manage.py和一个与站点名一致的子模块,子模块里同时创建了几个文件:

4.入门第三步:创建业务模块

有关这些文件的具体用途如上图所示。现在我们开始使用manage.py这个脚本来创建业务模块。例如在myblog站点里我想放置旅行travel、书籍book、数据data等子模块,就可以使用manage.py来创建:

(venv) E:/cao/djangoProj/myblog>python manage.py startapp travel(venv) E:/cao/djangoProj/myblog>python manage.py startapp book(venv) E:/cao/djangoProj/myblog>python manage.py startapp data如果你对python比较熟悉,此时可以打开manage.py文件,看到其中主要语句为:

from django.core.management import execute_from_command_lineexecute_from_command_line(sys.argv)也就是execute_from_command_line是在django.core.management这个包里定义的,具体有哪些参数,我们可以打开这个management包进行查看。

上面我们创建了3个业务模块,此时回到myblog站点目录下发现已经多了三个子目录,名字分别为travel,book和data,打开其中任意一个子目录,可以发现自动创建了一些文件:

这些文件也就是后面要用的视图、模型以及后台管理部分代码。

创建了业务模块后,还需要将这些业务模块添加到全局设定,此时进入核心子模块myblog目录里修改setting.py文件,在INSTALLED_APPS列表里添加刚创建的业务名称,具体如下:

# Application definitionINSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'book', #添加刚创建的业务名称 'data', 'travel']5. 入门第四步:测试web服务

这一步还是很重要的,因为我们需要通过浏览器可以访问到各个模块的页面。首先我们来看如何访问django提供的默认欢迎页面,也就是测试是否安装django成功页面。此时需要开启web服务,django也自带了测试websgi服务,启动时需要在站点目录下使用manage.py脚本来执行:

(venv) E:/cao/djangoProj/myblog>python manage.py runserver执行后,终端窗口就会有如下信息:

Watching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run 'python manage.py migrate' to apply them.June 11, 2020 - 09:50:28Django version 3.0.7, using settings 'myblog.settings'Starting development server at http://127.0.0.1:8000/Quit the server with CTRL-BREAK.可以看到提示了测试web访问方式为:http://127.0.0.1:8000,此时可以在浏览器地址里输入该地址,出现火箭图标就表明请求成功:

这个端口设置为8000,地址为127.0.0.1,就是本地。这两个参数可以自行设置,只需要在上述runserver命令后给定即可:

(venv) E:/cao/djangoProj/myblog>python manage.py runserver 127.0.0.1:2020如果ip地址想重新设置,需要在myblog那个核心子模块的setting.py文件里添加如下代码:

ALLOWED_HOSTS = ['*'] //使用*通配符默认所有IP均可6. 入门第五步:设定访问路由

这个路由设定非常关键,关系到是否能够成功访问各个业务模块。此时主要使用三个文件,一个是myblog核心子模块里的urls.py全局路由文件,一个是业务模块如book里的urls.py局部路由文件,一个是业务模块如book里的views.py视图设置文件。

这里我们倒着来,先进入业务模块book,由于book目录里并无urls.py文件,需要先创建一个。然后在里面输入如下内容:

from django.urls import path #导入路径相关配置from . import views #导入视图viewsurlpatterns = [ path('', views.index,name="index"), #默认访问book业务的首页]上述urls.py文件里有一个urlpatterns列表,这里可以存放该业务的所有路由设定。设定时使用path函数,里面传入''路径构造方式,views.index,视图里的index访问函数,name名称为index。也就是用于访问book业务的index页面。下面我们在views视图文件里添加一下该函数名称:

from django.http import HttpResponsedef index(request): msg="welcome to visit Dr.Cao's blog,2020!" return HttpResponse(msg)这里我们定义了一个index函数,用于返回一段话。由于是web请求,因此这里还使用django提供的http协议服务,对于index方法,使用HttpResponse响应函数,传入msg变量。

这样业务模块里的简单路由就设定好了,最后一步还需要回到核心子模块里的全局路由设定urls.py文件里,将业务模块添加进去:

from django.contrib import adminfrom django.urls import path,includeurlpatterns = [ path('admin/', admin.site.urls), path('book',include('book.urls')) #使用include函数,book.urls为业务模块里的urls包]上述代码中使用了include函数,在include函数里添加业务模块urls文件所在路径即可。如book.urls这是对象的使用方法,book为业务模块包,urls为该包里的对象,这是实际存在的。

经过这三步操作后,下面我们在浏览器地址上输入:http://127.0.0.1:8000/book,就可以看到页面上有显示设定的那句话:

这样对于业务模块的访问路由构造方式就完成了。如果还想实验一下,可以在book业务模块里再添加一层路径,即book业务的子页面,例如 http://127.0.0.1:8000/book/sell,如果想访问sell子页面,就需要在book模块的urls中设定就可以了:

from django.urls import pathfrom . import viewsurlpatterns = [ path('', views.index,name="index"), path('/sell', views.sell,name="sell") #添加一个sell子页面路径,访问views里的sell函数]我们看到路径为views里的sell函数,此时我们回到book目录的views.py文件,添加一个sell函数内容如下:

from django.shortcuts import renderfrom django.http import HttpResponsedef index(request): msg="welcome to visit Dr.Cao's blog,2020!" return HttpResponse(msg)def sell(request): #增加的sell函数 msg="你在访问曹鉴华的售书页面" return HttpResponse(msg) #返回字符串变量响应保存后再到浏览器地址栏里访问,地址为:http://127.0.0.1:8000/book/sell,回车后浏览器显示如下:

7. 入门第六步:访问HTML页面

有了路由设定基础后,对于访问HTML页面的请求,也是放在views视图里来处理的。此时回到全局设定setting.py文件里,可以看到有一个参数为TEMPLATES模板,里面的DIRS参数就是模板所在的路径。

TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], #视图文件存放位置的设定 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]如果我们设定在myblog站点目录新建一个templates子目录,用于存放网页文件,这里的DIRS参数就可以设定为:

'DIRS': [BASE_DIR+"templates",], #其中的BASE_DIR为项目根目录路径修改后保存下来。接下来就可以新建这个templates目录,并在里面创建一个网页文件index.html,内容可以示例如下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>myblog book</title></head><body><p>欢迎访问曹鉴华博客,本博客将推出系列讲座</p></body></html>接下来回到book目录的views视图文件,修改其渲染方式为render:

from django.shortcuts import renderfrom django.http import HttpResponsedef index(request): msg="welcome to visit Dr.Cao's blog,2020!" return HttpResponse(msg)def sell(request): msg={} #定义了一个字典 msg['data']="你在访问曹鉴华的售书页面" #设置了键名为data,值为后面的语句 return render(request,'index.html',msg) #使用render渲染方式render渲染方式一般包括三个参数,第一个为请求方式request,第二个模板网页文件,第三个为携带的参数,第三个参数如果没有变量传递可以不给。保存后,就可以在浏览器上访问了,如下图是不带参数显示:

如果想将views视图里渲染时的参数在网页端显示,就需要使用类似于flask前端的jinjia2引擎模板,渲染语法基本一致,如下:

{% python语句 %} {{ python变量 }}下面我们将index.html网页内容修改一下:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>myblog book</title></head><body><p>欢迎访问曹鉴华博客,本博客将推出系列讲座</p><p>{{data}}</p></body></html>保存后重新访问http://127.0.0.1:8000/book/sell,此时显示效果为:

这样我们也实现了变量的渲染显示。到此位置,有了这六步基本操作,一个简单的站点就可以搭建完成了。对比flask框架,django在业务解耦方面确实要好一些,同时会自动创建许多必要的文件,明显提高开发效率。

关键词:业务,入门,学会

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭