广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
3.1.1 项目的目录结构
在第一章的内容中,我们在D盘django-project目录中创建了django项目chipscoco,以及django应用blog,在学习新的知识前,先复习下项目的目录结构:
├──manage.py
└── chipscoco
├── __init__.py
├── settings.py
├── urls.py
├── wsgi.py
├── blog
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ ├── views.py
│ ├── migrations
在第二章的内容中,读者对django的MTV架构也有了整体的认识, MTV中的视图是整个架构的核心,它负责处理客户端的请求,并在必要时调用模型和模板。将客户端的请求与具体的视图进行关联,需要在django项目下的urls.py中进行路由配置。
3.1.2 在urls.py中配置路由
这里的路由,是指将客户端对http url的访问请求,与具体的视图进行关联。对http url不是很熟悉的读者,可以复习下1.5.1小节 http url中的知。打开chipscoco目录下的urls.py, 代码如下:
"""chipscoco URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/2.2/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ 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的源代码中,我们需重点关注的是全局变量 urlpatterns, 它是一个列表类型,定义了url到视图的路由。这里的url与http协议中的url是有区别的,浏览器中的url包含的是完整的协议格式,例如:http://127.0.0.1:8080/。
在无特殊情况下,薯条老师演示的服务器地址默认为本机:127.0.0.1,端口为8080,后续的教程中也按照此默认约定。
在urls.py中定义的url, 是默认从服务器的根目录开始的路径。在django2.x版本中,''表示根目录,其对应的http url为http://127.0.0.1:8080/。django url的基本语法:
path/...
path表示路径名,...表示路径后面的子目录,子目录之间以/符号进行分隔。django url举例:'', 在django中使用''来表示服务器的根目录,其对应的http url为 http://127.0.0.1:8080/
admin/
对应的http url为 http://127.0.0.1:8080/admin/
search/image
对应的http url为http://127.0.0.l:8080/search/image。在http url中,如果携带了查询参数:
http://127.0.0.1:8080/?greeting=Django
django会自动将查询参数进行解析,然后将其存储在HttpRequest对象的属性中。在3.2节的内容中,会对查询参数的获取方法进行讲解。如需捕获路径参数,可以使用<>符号。<>的捕获语法:<converter:name> 。converter表示类型转换器,会将路径参数转换为特定的类型。name表示路径参数。下表为django支持的转换器:
str | 默认转换器,匹配除了路径分隔符(/)之外的非空字符串 |
int | 匹配0及正整数 |
slug | 匹配字母、数字以及下划线组成的字符串 |
uuid | 匹配格式化的uuid,通过python内置模块 |
path | 匹配任何非空字符串,包含了路径分隔符(/) |
url路径捕获举例:
urlpatterns = [ path('admin/', admin.site.urls), path('', blog.Home.as_view()), path('/personal/<int:id>/', blog.personal) ] # /personal/<int:id>/表示将id作为路径参数传递给blog.personal视图,限定的格式为0及正整数 # 对应的视图函数personal def personal(request, id): # id表示已捕获的路径参数id return HttpResponse()
3.1.2 为url取一个别名
path函数中提供了一个name参数,可以为定义的url取一个别名。设置url别名的代码举例:
path('search/for/search/', blog.search, name='search')
在上文代码中,将url:search/for/search/的别名设置为search。为url设置别名的好处有以下两点:
(1) 别名相当于一个助记符
(2) 在模板文件(html)中可能会引用相关的url,当对url进行改动时(别名保持不变),也不会对模板文件造成影响。
3.1.3 在url中使用正则表达式
考虑这样的一种场景,在博客系统中每个页面都对应一个唯一的ID号,例如如下的http url形式:
http://chipscoco.com/blog/0.html
http://chipscoco.com/blog/1.html
http://chipscoco.com/blog/2.html
......
http://chipscoco.com/blog/1314.html
如果按照常规的方法,逐一的手动配置url与视图的路由,会异常繁琐且低效。对于这种情况,可以使用正则表达式。通过django的内置函数re_path,可以在url中使用正则表达式,使用re_path函数需要从django.urls模块中进行导出。现在通过re_path函数将上文中的url例子与视图关联起来。
代码实例:
re_path('blog/(\d+).html', blog.blog)
在正则表达式中的url中,()括起来的正则表达式,相当于一个占位符,会作为参数按序传递给对应的视图。
视图代码实例:
def blog(request, id): if request.method == "GET": return HttpResponse(str(id))
在上文的视图代码中,参数id对应的是url中的(\d+)表达式的值。对于url别名以及在url中使用正则表达式,在第4章中介绍Django模板时,会通过代码实例来进行讲解。现在我们熟悉了django url的基本语法,以及其与http url的对应关系,接下来的学习内容是掌握视图的定义及用法。
在django中,视图可分为两种类型:函数类型的视图,类类型的视图。
3.1.4 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: