广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
1.5.1 http url
在1.4节的内容中,我们启动了django应用blog,在浏览器中打开的首页是django的欢迎页。在本节的内容中,通过学习url以及django视图、模板的知识,我们可以自定义web站点的页面。URL是统一资源定位符,在HTTP协议中使用URL来进行资源的定位。HTTP URL的形式如下:http://<host>:<port>/<path>?<query>
(1) host表示主机的域名或IP地址,通过DNS系统,可以将域名解析为IP地址。
(2) port表示tcp连接的端口号,http协议是基于TCP协议来进行数据的可靠传输。端口号省略时,使用的是http协议的默认端口号:80。
(3) path是资源在目标主机上的路径,以"/"进行路径的连接。
(4) query是查询字符串。<path>,<query>和它前面的"?"都是可选的。如果<path>和<query>部分都没有,则"/"也可以省略。
query的基本格式:
name1=value1&name2=value2#anchor
query中的name=value,表示请求中携带的参数,name表示参数名,value为参数值, &用来对参数进行分隔。#符号后面的表示锚点,用来对页面中的特定位置进行定位。
URL实例
http://chipscoco.com/index.html?key=python#coco
在上文的url实例中,host为www.chipscoco.com, port为http协议默认的端口80,path是/index.html, 参数名为key, 参数值为python, 锚点为coco, 打开这个页面时,会定位到页面中的锚点coco处。
1.5.2 django视图
视图对应于django应用下的views.py文件,它的内部是一系列的函数或者类,用来处理客户端的访问请求。django应用服务器基于http协议,这里的访问请求指的是http请求。http协议常见的请求方法见下表:
http请求方法 | 描述 |
GET | 幂等请求,表示获取服务器上的资源,使用get请求时,请求参数会在URL中进行体现。 |
POST | 非幂等请求,表示向服务器提交资源,以让服务器进行处理,请求参数不会出现在URL中,而是出现在请求体中。从语义上来说,post请求是作为一种写操作,而get请求则作为读操作,读操作容易被浏览器缓存 |
现在打开blog目录下的views.py,来定义一个对站点首页的get请求进行处理的视图类。views.py更新后的代码如下:
from django.shortcuts import render # 新增的代码 from django.views import View # Create your views here. # 新增的代码 class Home(View): def get(self, request): return render(request, "blog/home.html")
在views.py中,新增了一行代码:
from django.views import View
View是在django.views中定义的视图基类,从该基类中进行继承,可以改写视图的get和post方法。视图类的get和post方法对应于http协议的get和post请求。在文件中同时新增了一个Home类,该类继承于View类:
class Home(View): def get(self, request): return render(request, "home.html")
在Home类中,改写了View类的get方法,在get方法中通过render方法将home.html文件内容响应给客户端(这里的客户端通常指浏览器)。现在已经通过django应用中的views.py, 定义了对客户端请求进行处理的逻辑,接下来的问题是,如何将浏览器的请求与django视图进行关联?此时需要在django项目的urls.py中进行路由映射, 以将客户端对站点url的请求与django视图进行关联。现在打开chipscoco目录下的urls.py,脚本文件更新后的代码如下:
# -*- coding:utf-8 -*- from django.contrib import admin from django.urls import path # 新增的代码 import blog.views as blog urlpatterns = [ path('admin/', admin.site.urls), # 新增的代码 path('', blog.Home.as_view()), ]
在urls.py中一共新增了两行代码:
(1) import blog.views as blog
该行代码表示导出blog下的views模块,并设置其别名为blog
(2) path('', blog.Home.as_view())
path是django内置的函数,表示将客户端的url访问与django视图进行关联。
代码path('', blog.Home.as_view()),表示将对服务器根目录的请求与视图中的Home类进行关联。在django中,如果对应的视图类型为类类型,则必须通过as_view的类方法来进行转换。通过以上操作 ,我们将url与django视图进行了关联,现在重新梳理下核心逻辑:
(1) 在django应用下的views.py中编写特定的视图,django中的视图用来处理客户端的访问请求。
(2) 在django项目中的urls.py中导入视图模块
(3) 使用path函数将url与对应的视图进行关联
在我们编写的Home视图中,通过render函数html文件的内容响应给客户端。这里的html文件其实就是django中的模板文件。在1.5.3节中会对django中的模板进行简单介绍。
1.5.3 django模板
django中的模板主要指的是html文件,django在渲染模板文件前,需要先在django服务器中找到该模板文件。在django中,通常的做法是为模板文件配置一个指定的目录,以存放模板文件。通过以下步骤,可以配置django的模板目录:
(1) 打开chipscoco目录中的settings.py
找到与模板配置相关的两个全局变量,分别是:BASE_DIR,TEMPLATES。
BASE_DIR表示服务器的根目录,TEMPLATES变量用来配置django模板的meta信息, 例如模板引擎,模板文件的存放路径等。
(2) 创建templates目录,存放模板文件
在django-project中创建templates目录,并在settings.py中进行模板路径的配置。打开settings.py,修改全局变量TEMPLATES。更新后的代码为:
TEMPLATES =[ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR,"templates")], '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', ], }, },]
在以上代码中对DIRS属性进行了修改,将templates目录配置为模板文件的存放目录。由于BASE_DIR指的是django服务器的根目录路径,故通过代码 os.path.join(BASE_DIR, "templates")可以获取templates目录的绝对路径。
1.5.4 注册django应用
在定义了url与视图的路由映射,以及模板目录的配置以后,需要在django项目中注册指定的django应用。打开chipscoco目录中的settings.py,找到与应用注册相关的全局变量:INSTALLED_APPS。INSTALLED_APPS是一个列表类型,用来加载指定的Django应用。
在INSTALLED_APPS中添加chipscoco应用, 更新后的代码为:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 新增后的代码 'blog', ]
通过以上操作,我们配置好了django应用的模板目录以及注册了我们的django应用blog,现在可以开始自定义站点页面。
1.5.5 你好django
通过1.5.1节,1.5.2节,1.5.3节中的学习以及操作,我们对url,django视图、模板有了基本的认识。现在请读者按照以下步骤,来访问我们自定义的站点页面:
(1) 在templates目录中创建blog目录,在blog目录中创建home.html文件,并输入以下html代码:
<html> <head> <title>Django的美妙爵士乐</title> </head> <body> <h1>Hello Django</h1> </body> </html>
(2) 在浏览器地址栏中输入http://127.0.0.1:8080/
在进行第二步操作前,如未启动django服务器,则必需先进入windows命令行,切换到django-project目录,执行python manage.py runserver 8080来启动应用服务器。在浏览器中如见到下图页面的输出,表示成功地定义了站点页面。
1.5.6 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料:
已有4位薯条发表了看法:
访客 评论于 2021-01-05 16:17:31 回复
老师,全局变量BASE_DIR,如何修改。
访客 评论于 2021-01-05 16:17:40 回复
老师,全局变量BASE_DIR,如何修改。
访客 评论于 2021-01-05 21:15:24 回复
# 新增的代码
import blog.views as blog
老师 这段代码报错了
刘家三少 评论于 2021-01-05 21:16:59 回复
# 新增的代码
import blog.views as blog
这段代码报错