zoukankan      html  css  js  c++  java
  • django 路由系统

    路由系统

    匹配方式

    1. 正则表达式的模糊匹配

    2. 分组匹配 --> 相当于给视图函数传递位置参数

    3. 分组命名匹配 --> 相当于给视图函数传递关键字参数


    (两个不要混合使用) 

    传参

    位置传参

    路由
    url(r'^book1/([0-9]{2,4})/([a-zA-Z]{2})/$', views.book1),
    接收
    # 位置参数
    def book1(request, arg1, arg2):
        print("arg1:", arg1)
        print("arg2:", arg2)
        return HttpResponse("传参成功~")

    关键字传参

    路由
    url(r'^book2/(?P<year>[0-9]{2,4})/(?P<title>[a-zA-Z]{2})/$', views.book2),
    接收
    # 关键字参数
    def book2(request, year, title):
        print("year:", year, type(year))
        print("title:", title)
        return HttpResponse("传参成功~")
    

    反向解析

    别名和命名空间

    模板使用

                           命名空间:别名
    <p>张:<a href="{% url 'car:book' 2018 'nb' %}">点我</a></p>
    

     路由

    优先找命名空间,再找别名,
    命名空间
    url(r'^car/', include((app01_urls,'app01'), namespace="car"), ),
    别名
    url(r'^home1/', views.home, {"age": 18}, name="home"),

    视图中使用

    路由

    路由
    url(r'^car/', include((app01_urls,'app01'), namespace="car"), ),
    别名
    # url(r'^book/([0-9]{2,4})/([a-zA-Z]{2})/$', views.book, name="book"),
        # 关键字参数
        url(r'^book/(?P<year>[0-9]{2,4})/(?P<title>[a-zA-Z]{2})/$', views.book, name="book")  

    视图

    def home(request, age):
        print(age)
        # 传位置参数
        # redirect_url = reverse("car:book", args=(2018, "sb"))
        from django.urls import reverse
        # 传关键字参数
        redirect_url = reverse("car:book", kwargs={"year": 2018, "title": "sb"})
        print(redirect_url)
        # return redirect(redirect_url)
    
        return render(request, "test/home.html")
    

      

      

     其他

    默认路由补充/配置

    # 默认会在URL后面加上 '/',然后再去urls.py里面匹配对应关系
    APPEND_SLASH = True
    

      

    2. 路由系统(urls.py)  http://www.cnblogs.com/liwenzhou/p/8271147.html
            1. 正则表达式的模糊匹配
            2. 分组匹配        --> 相当于给视图函数传递位置参数
            3. 分组命名匹配    --> 相当于给视图函数传递关键字参数
                (两个不要混合使用)
                
    ---------------------------- 这里是坎 ------------------------------------
                
            4. 反向解析URL
                本质上就是给url匹配模式起别名,然后用过别名拿到具体的URL路径
                
                1. 怎么起别名?
                    在url匹配模式中,定义name="别名"
                2. 如何使用?
                    1. 在模板语言里面使用:
                        {% url "别名" %}  --> 得到具体的URL路径
                    2. 在视图中如何使用:
                        from django.urls import reverse
                        
                        reverse("别名")  --> 得到具体的URL路径
                3. 如何传参数?
                    1. 模板语言中:
                        {% url "别名" 2018 "nb" %}
                    2. 视图函数中
                        传位置参数:
                            reverse("别名", args=(2018, "nb"))
                    
                        传关键字参数:
                            reverse("别名" kwargs={"year": 2018, "title": "nb"})
                4. namespace
                    为了防止不同的app下面的url匹配模式有重复的别名
  • 相关阅读:
    C#开发微信公众平台-就这么简单(附Demo)
    Newtonsoft.Json高级用法
    C#获取文件的MD5码
    C#动态执行代码
    c#插件式开发
    利用反射执行代码
    yield关键字用法与解析(C# 参考)
    HttpContext.Current.Cache和HttpRuntime.Cache的区别,以及System.Runtime.Caching
    GZip压缩与解压缩
    Asp.Net 请求处理机制
  • 原文地址:https://www.cnblogs.com/huay/p/11307107.html
Copyright © 2011-2022 走看看