creat 如何 定义 req tro hive htm ret
一、urls.py 模块
路由映射模块,主要完成 url 与 views 视图函数的映射。
当一个 url 请求到来时,会按照这个模块中的 url 地址从上到下进行匹配,如果匹配成功,将执行映射试图中的函数;反之将返回 404 错误。
二、url 配置
1.urlpatterns
- urlpatterns = []
里面存放一条条的路由映射关系。
2.url
- url(正则表达式, 映射函数,参数 [可选],别名 [可选])
3. 配置方式
- from django.conf.urls import url from django.contrib import admin from testfile import views
- urlpatterns = [url(r' ^ admin / ', admin.site.urls), #系统生成的映射#注意里面的任意一条映射匹配成功,后面的则不在匹配url(r' ^ articles / 2003 / $', views.special_case_2003), #表示articles / 2003 / 这个路径映射views模块的special_case_2003函数url(r' ^ articles / ([0 - 9] {
- 4
- }) / $', views.year_archive), #表示2003可以是0 - 9的任意4个数字url(r' ^ articles / ([0 - 9] {
- 4
- }) / ([0 - 9] {
- 2
- }) / $', views.month_archive), #表示匹配二级目录url(r' ^ articles / ([0 - 9] {
- 4
- }) / ([0 - 9] {
- 2
- }) / ([0 - 9] + ) / $', views.article_detail), #表示匹配三级目录]
注意: 上面匹配都加了小括号,这些括号里面的值会当作参数传递到后面的函数中,也就是, views.special_case_2003 中.....
二、views 视图逻辑处理
1.HttpResponse(request,str)(request 参数必须指定)
定义的函数必须,定义一个形式参数,这个形式参数接收的 url 请求信息对象,可以通过这个形式参数的各种方法获取到各种请求信息 向用户返回信息,必须在函数结尾 return,如果是要给用户返回一串字符串,那就必须返回 HttpResponse 方法,参数是要返回的字符串,需要先导入这个方法
2.render(request,"index.html",context)
- 该函数要完成两个个操作:1.将从数据库获取的数据填充在 {
- {}
- }之间2.渲染html页面并返回给请求端
3. 逻辑处理
- from django.shortcuts import render,
- HttpResponse
- def demo(request, path) : //path是url匹配加括号默认传递过来的参数
- print(request.method)#获取用户请求的路径
- return HttpResponse(path)#将路径返回到页面
注意:要获取路径时,需要在路由映射哪里用正则的分组 () 号,将要获取的路径分组,也就是括起来,如果路由映射里有多个分组,逻辑函数就需要多个形式参数接收.
为了更好理解路径参数是如何传递过来的, 我们重新来看看 url 的配置
- from django.conf.urls import url
- from django.contrib import admin
- from app1 import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls), #系统生成的映射
- url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), #表示匹配二级目录
- url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), #表示匹配三级目录
- ]
views.py 函数参数配置
- def month_archive(request, year, month) : //这里的参数与路由中的括号是匹配的,
- pass
当然,在 url 正则匹配的时候,我们也可以给分组命名,如:
- from django.conf.urls import url
- from django.contrib import admin
- from testfile import views
- urlpatterns = [
- url(r'^admin/', admin.site.urls), #系统生成的映射
- url(r'^(?P<year>articles/2003)/$', views.month_views), #表示articles/2003/这个路径映射views模块的month_views函数
那么在 views 视图中,我们可以这样来接受這个路径参数:
- from django.shortcuts import render,HttpResponse
- # Create your views here.
- def month_view(request,year):
- print(year)
- return render(request,'index.html')
三、路由配置 include 方式
如果一个网站很多,有很多 app 应用,那么就需要很多路由分发。如果将所有的路由分发都放在 urlconf 文件下,這样会使得文件不易于管理,为此,我们可以给每一个 app 都创建一个 urls.py 文件,然后再 urlconf 中的 urlpatterns 中将该 urls.py 文件包含进来就行了。
- from django.conf.urls import include, url # 导入全局url
- urlpatterns = [
- url(r'^bug', include('testfile.urls')), #将访问路径以bug开头的路径分发到app1下的urls.py模块里进行路由映射
- ]
这样,我们可以在 testfile 的 urls 下配置属于 testfile 的所有路由规则和逻辑处理函数。
Django-url 路由映射与 views 逻辑处理
来源: http://www.bubuko.com/infodetail-2270616.html