Django学习手册 - 正则URL路由配置/路由分发

时间:2022-08-26 19:20:44

###############################################

总结:

一、url路由配置:

  方式一:(通过url链接get获取)

  方式二:(url路由匹配方式获取-拓展(元组方式,))

  方式三:(url路由匹配方式获取-拓展(字典方式))

 

二、表单动态提交方式:

  name属性运用

  request.path_info属性运用

三、路由分发 

 

###############################################

 

一、url路由配置:

方式一:

前端:

<ur>字典循环:(items)
        {% for i,j in dict_info.items %}
            <li>
{#                方式一:提交nid到url连接里面。#}
                <a href="/index2/?nid={{ i }}"> {{ i }} --- {{ j.name }}</a>
            </li>
        {% endfor %}
</ur>

 

URL配置:

Django学习手册 - 正则URL路由配置/路由分发

 

后端views配置:

dict_info = {
    "1":{"name":"root1","phone":"111"},
    "2":{"name":"root2","phone":"222"},
    "3":{"name":"root3","phone":"333"},
    "4":{"name":"root4","phone":"444"},
    "5":{"name":"root5","phone":"555"},
    "6":{"name":"root6","phone":"666"},
    "7":{"name":"root7","phone":"777"},
}

def index(request):
    return render(request,"index.html",{"dict_info":dict_info})


#方式一:(利用url提交过来获取)
def index2(request):
    nnid = request.GET.get("nid") return HttpResponse(nnid)

测试:

Django学习手册 - 正则URL路由配置/路由分发

Django学习手册 - 正则URL路由配置/路由分发

获取到了nid 的数据了。

 

 

方式二:

前端:

 <ur>字典循环:(items)
        {% for i,j in dict_info.items %}
            <li>
{#                方式二:提交的url,通过urls路由匹配到。#}
                <a href="/index2-{{ i }}"> {{ i }} --- {{ j.name }}</a>
            </li>
        {% endfor %}
 </ur>

 

url路由配置:

urlpatterns = [
    path('admin/', admin.site.urls),
    url('^index/', views.index),

    # 方式二的URL路由
  url('^index2-(\d)', views.index2),
  # 元组形式
  # url('^index2-(\d)-(\d)', views.index2),
]

 

后端:

# 方式二:(利用url匹配的方式获取)
def index2(request,nid):
    return HttpResponse(nid)

#元组形式获取
# def index2(request,*args):
# return HttpResponse(args)

 

测试:

Django学习手册 - 正则URL路由配置/路由分发

Django学习手册 - 正则URL路由配置/路由分发

 

方式三:

前端:(不需要修改)

<ur>字典循环:(items)
        {% for i,j in dict_info.items %}
            <li>
                <a href="/index2-{{ i }}"> {{ i }} --- {{ j.name }}</a>
            </li>
        {% endfor %}
    </ur>

URL配置:

   #方式三的URL路由
    url('^index2-(?P<nid>\d)', views.index2),
#字典形式 # url('^index2-(?P<nid>\d)-(?P<uid>\d)', views.index2),

后端:

def index2(request,**kwargs):
    print(kwargs)
    return HttpResponse(kwargs.values())

测试:

Django学习手册 - 正则URL路由配置/路由分发

Django学习手册 - 正则URL路由配置/路由分发

 

 

 

二、表单url动态提交方式:

  name属性运用

    前端:

{#    表单提交方式,可以用django内置方法命名提交,动态匹配url方式#}
    <form action="{% url 'names' %}" method="post">
{#  <form action="{% url 'names'可在后面添加参数 %}" method="post">#}
        aaaaa
    </form>

    url配置:

# 表单提交,动态匹配url方式,name 属性
    url('^1234', views.index2,name="names"),

    测试:

    Django学习手册 - 正则URL路由配置/路由分发

 

  

  request.path_info属性运用

{#
request.path_info表单提交方式,完全动态匹配当前url方式#} 
<form action="{{ request.path_info }}" method="get"> 不不 </form>

 

 Django学习手册 - 正则URL路由配置/路由分发

 

三、路由分发:

 有两天业务线,app01,app02,在urls 内导入 include ,引入路由分发代码

Django学习手册 - 正则URL路由配置/路由分发

 在app02 目录下新建一个urls 文件

 Django学习手册 - 正则URL路由配置/路由分发

 配置

Django学习手册 - 正则URL路由配置/路由分发

 在app02视图内配置

 Django学习手册 - 正则URL路由配置/路由分发

测试:

Django学习手册 - 正则URL路由配置/路由分发