时间: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还有许多其他说不完的优点,如果你喜欢并习惯使用它的话。pip install django
如果遇到速度比较慢的状况,可以加入国内阿里云镜像站点来安装:pip install -i https://mirrors.aliyun.com/pypi/simple django
鉴于目前pycharm在python程序开发中的欢迎程度,我们可以下载一个社区版的pycharm安装到本地,然后用于开发python程序。(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里。(venv) E:/cao/djangoProj>django-admin startproject myblog
这里我创建了一个名为myblog的站点名。创建完成后,此时回到djangoProj目录下就发现了多了一个myblog文件夹,同时里面还自动创建一个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包进行查看。# 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服务(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,此时可以在浏览器地址里输入该地址,出现火箭图标就表明请求成功:(venv) E:/cao/djangoProj/myblog>python manage.py runserver 127.0.0.1:2020
如果ip地址想重新设置,需要在myblog那个核心子模块的setting.py文件里添加如下代码:ALLOWED_HOSTS = ['*'] //使用*通配符默认所有IP均可
6. 入门第五步:设定访问路由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变量。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为该包里的对象,这是实际存在的。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,回车后浏览器显示如下: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,第二个模板网页文件,第三个为携带的参数,第三个参数如果没有变量传递可以不给。保存后,就可以在浏览器上访问了,如下图是不带参数显示:{% 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,此时显示效果为:关键词:业务,入门,学会