首先我们在上篇文章中创建的应用 app_1 中的视图文件 views.py 中编写以一个带参数的函数 function ,并传入一个参数 num:
内容如下:
from django.shortcuts import render from django.http import HttpResponse def function(request,num): return HttpResponse(f'give function a num :{num}')这段代码将会在待会访问的网站中显示 HttpResponse 中的内容
然后还要给这个视图文件配置一个子路由
在应用 app_1 下的路由文件 urls.py 中添加以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^2/(2019)$',views.function) ]这里要注意了!!因为待会需要使用到正则,所以 path 要改为 re_path ,不然是会报错的,其他的书写格式也要注意一下哟!
对于要传递的参数需要用 括号() 括起来,这里是传入一个常数: 2019
然后启动服务:
python manage.py runserver #这里是内网哦!最后打开浏览器访问如下地址:
http://127.0.0.1:8000/app_1/2/2019上面传递参数的过程是在网址中传递参数并在视图中显示出来
显示内容是:
give function a num :2019因此得出传参的过程是将子路由文件中括号括起来的实参 2019 传递给了视图文件中的 function()的 num 变量
另外可以通过正则表达式让传递的参数变得更加灵活,比如我可以通过传递3位数的任意数字访问这个网页内容
那可以这样写代码,在应用 app_1 下的路由文件 urls.py 中添加以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^2/([0-9]{3})$',views.function) #第一种 re_path(r'^2/(/d{3})$',views.function) #第二种 ]正则涉及很多知识,这里不做重点
这样写就可以实现在网址中输入任意三位字符均可访问该网站内容
比如输入:
http://127.0.0.1:8000/app_1/2/198 http://127.0.0.1:8000/app_1/2/110 http://127.0.0.1:8000/app_1/2/119访问以上网址均可看到页面内容:
give function a num :198 give function a num :110 give function a num :119就是在网址中指定将要调用函数里的参数名
在应用 app_1 下的路由文件 urls.py 中添加以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^2/(?P<yy>[0-9]{3})$',views.function) ]代码中通过 ?P 指定函数 function 的参数必须是 yy ,否则无效,注意 P 是大写
也就是说 funtion 函数的内容应该变成了这样:
from django.shortcuts import render from django.http import HttpResponse def function(request,yy): return HttpResponse(f'give function a num :{yy}')变量 num 改为了 变量 yy
当输入的网址错误时我们需要返回给用户一个相对应错误,所以需要制作一个处理错误的模板,这里以404错误为例
首先在项目 project_1 下创建一个模板文件夹 templates,在该文件夹中创建一个404.html 文件
内容如下:
<!DOCTYPE html> <html> <head> <title>404错误页面</title> </head> <body> <h1>自定义404错误页面</h1> </body> </html>这是自己定义的一个简单的页面
然后在项目 project_1 下的配置文件 settings 文件中找到 TEMPLATES
它的内容是这样的:
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', ], }, }, ]然后添加键 DIRS 对应的值为:
'DIRS': [os.path.join(BASE_DIR,'templates')]BASE_DTR 是指当前的项目目录,templates是指刚才创建模板目录
除此之外还要将 DEBUG 的值改为 False,不然会出现调试页面,就看不到模板页面了
然后在浏览器随便输入一个错误的网址,就会自动跳转到这个模板页面
显示内容:
自定义的404错误页面信息不过在学习测试阶段建议 DEBUG 的值设置为 True ,出错后方便调试
我将它理解成输出重定向,就是输入这个网址,但网页输出的是另外一个指定网址的页面内容
首先在应用app_1 目录下的视图文件中新建一个 func 函数,内容如下:
from django.shortcuts import render from django.http import HttpResponse,HttpResponseRedirect #导入了两个函数 from django.urls import reverse #这个也是新导入的 def func(request): return HttpResponseRedirect(reverse('hello')) #重定向到名为 hello 的网址页面 def hello(request): return HttpResponse('hello , my first django !')然后在应用 app_1 目录下的子路由文件 urls.py 中添加以下信息:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^$', views.hello,name='hello' ), # 多加了 name 参数哦!就是将这个网址路径命名为hello re_path(r'^func/$',views.func,name='func') ]然后在浏览器输入:
http://127.0.0.1:8000/app_1/func网页显示的内容是:
hello , my first django !网址变成了:
http://127.0.0.1:8000/app_1/注:当前使用的Django 版本为 2.0 版本
学习资料:《python全栈工程师特训班》
# URL配置首先我们在上篇文章中创建的应用 app_1 中的视图文件 views.py 中编写以一个带参数的函数 function ,并传入一个参数 num:
内容如下:
from django.shortcuts import render from django.http import HttpResponse def function(request,num): return HttpResponse(f'give function a num :{num}')这段代码将会在待会访问的网站中显示 HttpResponse 中的内容
然后还要给这个视图文件配置一个子路由
在应用 app_1 下的路由文件 urls.py 中添加以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^2/(2019)$',views.function) ]这里要注意了!!因为待会需要使用到正则,所以 path 要改为 re_path ,不然是会报错的,其他的书写格式也要注意一下哟!
对于要传递的参数需要用 括号() 括起来,这里是传入一个常数: 2019
然后启动服务:
python manage.py runserver #这里是内网哦!最后打开浏览器访问如下地址:
http://127.0.0.1:8000/app_1/2/2019上面传递参数的过程是在网址中传递参数并在视图中显示出来
显示内容是:
give function a num :2019因此得出传参的过程是将子路由文件中括号括起来的实参 2019 传递给了视图文件中的 function()的 num 变量
另外可以通过正则表达式让传递的参数变得更加灵活,比如我可以通过传递3位数的任意数字访问这个网页内容
那可以这样写代码,在应用 app_1 下的路由文件 urls.py 中添加以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^2/([0-9]{3})$',views.function) #第一种 re_path(r'^2/(/d{3})$',views.function) #第二种 ]正则涉及很多知识,这里不做重点
这样写就可以实现在网址中输入任意三位字符均可访问该网站内容
比如输入:
http://127.0.0.1:8000/app_1/2/198 http://127.0.0.1:8000/app_1/2/110 http://127.0.0.1:8000/app_1/2/119访问以上网址均可看到页面内容:
give function a num :198 give function a num :110 give function a num :119就是在网址中指定将要调用函数里的参数名
在应用 app_1 下的路由文件 urls.py 中添加以下内容:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^2/(?P<yy>[0-9]{3})$',views.function) ]代码中通过 ?P 指定函数 function 的参数必须是 yy ,否则无效,注意 P 是大写
也就是说 funtion 函数的内容应该变成了这样:
from django.shortcuts import render from django.http import HttpResponse def function(request,yy): return HttpResponse(f'give function a num :{yy}')变量 num 改为了 变量 yy
当输入的网址错误时我们需要返回给用户一个相对应错误,所以需要制作一个处理错误的模板,这里以404错误为例
首先在项目 project_1 下创建一个模板文件夹 templates,在该文件夹中创建一个404.html 文件
内容如下:
<!DOCTYPE html> <html> <head> <title>404错误页面</title> </head> <body> <h1>自定义404错误页面</h1> </body> </html>这是自己定义的一个简单的页面
然后在项目 project_1 下的配置文件 settings 文件中找到 TEMPLATES
它的内容是这样的:
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', ], }, }, ]然后添加键 DIRS 对应的值为:
'DIRS': [os.path.join(BASE_DIR,'templates')]BASE_DTR 是指当前的项目目录,templates是指刚才创建模板目录
除此之外还要将 DEBUG 的值改为 False,不然会出现调试页面,就看不到模板页面了
然后在浏览器随便输入一个错误的网址,就会自动跳转到这个模板页面
显示内容:
自定义的404错误页面信息不过在学习测试阶段建议 DEBUG 的值设置为 True ,出错后方便调试
我将它理解成输出重定向,就是输入这个网址,但网页输出的是另外一个指定网址的页面内容
首先在应用app_1 目录下的视图文件中新建一个 func 函数,内容如下:
from django.shortcuts import render from django.http import HttpResponse,HttpResponseRedirect #导入了两个函数 from django.urls import reverse #这个也是新导入的 def func(request): return HttpResponseRedirect(reverse('hello')) #重定向到名为 hello 的网址页面 def hello(request): return HttpResponse('hello , my first django !')然后在应用 app_1 目录下的子路由文件 urls.py 中添加以下信息:
from django.urls import re_path from . import views urlpatterns = [ re_path(r'^$', views.hello,name='hello' ), # 多加了 name 参数哦!就是将这个网址路径命名为hello re_path(r'^func/$',views.func,name='func') ]然后在浏览器输入:
http://127.0.0.1:8000/app_1/func网页显示的内容是:
hello , my first django !网址变成了:
http://127.0.0.1:8000/app_1/注:当前使用的Django 版本为 2.0 版本
学习资料:《python全栈工程师特训班》