美文网首页
05_路由层简单操作

05_路由层简单操作

作者: knot98 | 来源:发表于2018-11-07 17:11 被阅读0次

    路由层

    一、简单配置

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]
    
    • 第一个参数是正则表达式(如果要精准匹配:'^admin/$')
    • 第二个参数是视图函数(ps:不用加括号)

    二、无名分组

    # settings.py 文件
    urlpatterns = [
        url(r'^publish/([0-9]{4})/([0-9]{2})$', views.publish),
    ]
    # views.py 文件
    def publish(request, mounth,year):
        return HttpResponse
    
    • 按位置传参
    • 分组之后,会把分组出来的数据,当位置参数,传到视图函数,所以,视图函数需要定义形参

    三、有名分组

    # settings.py 文件
    urlpatterns = [
        url(r'^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$', views.publish),
    ]
    # views.py 文件
    def publish(request, mounth,year):
        return HttpResponse
    
    • 按关键字传参
    • 有名分组之后,会把分组出来的数据,当关键字参数,传到视图函数,所以,视图函数需要定义形参,形参名字要跟分组的名字对应,与顺序无关

    四、反向解析

    1、先命名
    无参数:
        url(r'^publish/$', views.publish,name='pub'),
    
    无名分组:
        url(r'^publish/([0-9]{4})/([0-9]{2})/$',views.publish,name='pub'), 
    
    有名分组:
        url(r'^publish/(?P<year>[0-9]{4})/(?P<mounth>[0-9]{2})/$',views.publish,name='pub'), 
    
    2、在模板层中
    无参数:
        {% url 'pub' %}
        
    无名分组的:
        {% url 'pub' 2018 12 %}
        
    有名分组:
        {% url 'pub' 2018 12 %}  还可以 {% url 'pub' year=2018 mounth=12 %}
    
    3、在视图层
    from django.shortcuts import reverse
    # 视图函数内
    无参数:
        url=reverse('pub')
    无名分组:
        url=reverse('pub',args=(2018,12,))
    有名分组:
        url=reverse('pub',args=(2018,12,)) 还可以 url=reverse('pub',kwargs={'year':2018,'mounth':12})
    

    五、路由分发

    1、在不同的app里创建urls.py
    2、在总路由中
    from django.conf.urls import include 
    urlpatterns = [
        url(r'^blog/',include('blog.urls')),
        url(r'^app01/',include('app01.urls')),
    ]
    
    3、在不同的app的urls里配置路由关系
    !!!重点:总路由,不能加结束符$

    六、名称空间

    # 总路由
    urlpatterns = [
        url(r'^blog/',include('blog.urls',namespace='blog')),
    ]
    # 子路由:
    urlpatterns = [
        url(r'^publish/$', views.publish,name='test'),
    ]
    # 反向解析:
        #视图层:
        url = reverse('blog:test')
        #模板层:
        {% url 'app01:test'%}
    ***一般不要用***
    

    七、伪静态

    # 路由:
        url(r'^book/(?P<id>\d+.html)',views.book),
    # 访问:
        http://127.0.0.1:8000/book/4.html
                
    # 将自己的页面伪装成与html文件一样的静态文件
    

    相关文章

      网友评论

          本文标题:05_路由层简单操作

          本文链接:https://www.haomeiwen.com/subject/utgvxqtx.html