Django框架学习5--urls.py配置规则

1.url配置规则:各个版本支持的不同

  • path 只能绝对匹配路径地址,不支持正则匹配
  • re_path 支持正则匹配,django 1.x版本常用
  • url 支持正则匹配,实际上就是return re_path, django2.x版本推荐

2.通过url获取参数

平常我们访问页面时经常有这样的url:http://127.0.0.1:8000/hello/page=1,

这样带参数的url需要我们获取到page后的参数,传递给视图函数进行处理。

url(r'^page=(\d+)$',views.page),
使用正则匹配页码数
def page(request,num):
    # return render(request, "222.html")
    # print(num,type(num))
    # if int(num)== 1:
    #     return render(request, "111.html")
    # else:
    #     return render(request, "222.html")
    try:
        num = int(num)
        if num == 1:
            return render(request, "111.html")
        else:
            return render(request, "222.html")
    except:
        raise Http404

参数接收到的是str类型,需要转换成对应的int 类型

如果url匹配规则为

url(r'^page=\d+$',views.page),此时视图函数page就接收不到 num参数了,不论page值为多少,都不能实现动态访问

如果page函数中仍然接收了参数就会报服务器错误

加上括号后表示此参数会传递给视图函数。

Django设置文件setting.py里面有个参数 DEBUG = True,表示debug模式,如果不修改为False界面显示的将是

Django框架学习5--urls.py配置规则_第1张图片

修改为False后,显示正常的界面

Django框架学习5--urls.py配置规则_第2张图片

ALLOWED_HOSTS是域名访问权限,设置可以访问的域名,默认值为空[], 只允许localhost或127.0.0.1在浏览器上访问

如果想让所有的域名都能访问,可以设置为:ALLOWED_HOSTS = ["*"]

或者在列表中指定能够访问的ip,仅指定的ip可访问。

注意:修改settings.py文件后需要重启服务器,才能使修改生效。

3.页面跳转,点击界面上的连接跳转到新的界面

home界面:





    
    homepage


{{year}}----->>>>>{{month}}

点击跳转到我的界面
def home(request, year, month):
    return render(request, "datetime.html", {"year": year, "month": month})

#传递参数到界面上

def my_page(request):
    return HttpResponse("这个是我的界面")
from django.conf.urls import url
from django.urls import path

# from hello import views
from hello import views
from . import view

urlpatterns = [
    url(r"^page/(?P[0-9]{4})/(?P[0-1][0-9])", view.home, name="date"),
    url(r'^mypage$', view.my_page),
]

url获取参数

Django框架学习5--urls.py配置规则_第3张图片

 

Django框架学习5--urls.py配置规则_第4张图片

注意:点击跳转到我的界面的标签中href如果只写 href='mypage',只是将原来的url中最后一个/后的内容替换为mypage,如果没有对应的url匹配就会报404错误。

Django框架学习5--urls.py配置规则_第5张图片

4.匹配流程

urls.py本质上就是一个请求映射表,它决定了哪个请求由哪个函数来处理,具体过程如下:

1 浏览器发送请求url

2 服务端根据请求的url,在项目的所有应用(包括根目录)的urls.py配置文件中进行查找,如果能匹配到该url,就会将该url交给其对应的视图函数进行处理。

3 负责处理该url的视图函数,会搜集一些业务数据,然后把这些数据,通过 return render(request, '模板文件', 数据); 渲染到前端页面展示给用户
 

你可能感兴趣的:(Django框架学习)