• Django的URL写法


    一、Django基于正则表达式的URL

    # url(r'^detail-(d+)-(d+).html', views.detail),  #这和下面的区别是,这两个数可能会变,按照先后顺序获取
    # url(r'^detail-(?P<nid>d+)-(?P<uid>d+).html', views.detail), #写死了nid 和uid,接收的参数也要对应着,根据ID一一对应获取(尽量用这种)
    def detail(request,nid,uid):  
      pass

    多个参数时,可以使用这种方式接收参数:def detail(request, *args,**kwargs):


    urls.py
     url(r'^detail/', views.detail),   #改前

    url(r'^detail-(d+).html', views.detail), #改后,路由url写得好看一点



    views.py
     def detail(request):  #改url.py前的操作
    nid = request.GET.get('nid')
    detail_info = USER_DICT[nid]
    return render(request, 'detail.html',{'detail_info':detail_info})



    def detail(request,nid): #改url.py后的操作 url传了+d参数,所以这边也要接收一下
    detail_info = USER_DICT[nid]
    return render(request, 'detail.html',{'detail_info':detail_info})






    detail.html
            {% for k,row in user_dict.items %}   {#  改url.py前获取的路由?   ,看起来以为是动态的 #}
                <li><a target="_blank" href="/detail/?nid={{ k }}">{{ row.name }}</a></li>#}
            {% endfor %}


    {% for k,row in user_dict.items %} {# 改url.py后获取的路由-#} <li><a target="_blank" href="/detail-{{ k }}.html">{{ row.name }}</a></li> {% endfor %}

    二、对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****


    urls.py

    url(r'^asdfasdfasdf/', views.index, name='i1'),
    url(r'^yug/(d+)/(d+)/', views.index, name='i2'),
    url(r'^buy/(?P<pid>d+)/(?P<nid>d+)/', views.index, name='i3'),



    views.py

    
    
    from django.urls import reverse

    def
    func(request, *args, **kwargs):   url1 = reverse('i1') # asdfasdfasdf/   url2 = reverse('i2', args=(1,2,)) # yug/1/2/   url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/





    xxx.html

    {% url "i1" %} # asdfasdfasdf/
    {% url "i2" 1 2 %} # yug/1/2/
    {% url "i3" pid=1 nid=9 %} # buy/1/9/



    {#因为urls.py文件中,路由多添加了name='indexx',所以可以通过这种方式来读取路由跳转,防止路由连接改名字也不受影响#}
    <form action="{% url 'indexx' 2 %}" method="post">   {# 如果带有参数,这种跳转方式也不是很好,因为不是动态跳转,一直强制在2页面#}
    <form action="{% url 'indexx' nid=1 uid=3 %}" method="post"> {# 如果带有参数,这种跳转方式也不是很好,因为不是动态跳转,一直强制在1/3页面#}

    <p><input type="text" name="user" placeholder="用户名:"></p>
    <p><input type="text" name="email" placeholder="邮箱:"></p>
    <input type="submit" value="提交">#}


    <form action="{{ request.path_info }}" method="post">  {#动态生成url,没上面方式这么死板#}
     

    注:
    # 当前的URL
    request.path_info

    三、多级路由分发,include()

    project/urls.py

    from django.conf.urls import url,include
    from django.contrib import admin
    
    urlpatterns = [
      url(r'^cmdb/', include("app01.urls")),
      url(r'^monitor/', include("app02.urls")),
    ]


    app01/urls.py

    from django.conf.urls import url,include
    from django.contrib import admin
    from app01 import views
    
    urlpatterns = [
      url(r'^login/', views.login),
    ]

    app02/urls.py

    from django.conf.urls import url,include
    from django.contrib import admin
    from app02 import views
    
    urlpatterns = [
    url(r'^login/', views.login),
    ]

    写在最后:

        url(r'^business/$',views.business),   #最好加上终止符$,否则如:url(r'^business_add/',views.business)不会识别到

  • 相关阅读:
    Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控
    spring Boot(十九):使用Spring Boot Actuator监控应用
    Spring Boot(十八):使用Spring Boot集成FastDFS
    Spring Boot(十七):使用Spring Boot上传文件
    Spring Boot(十六):使用Jenkins部署Spring Boot
    Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例
    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理
    ubuntu18.04使用vscode报pylint is not install错误
    处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“Manag
    在SQL Server中,为何都建议禁止 VIA 协议,VIA协议具体内容是什么?
  • 原文地址:https://www.cnblogs.com/hjy123/p/12957489.html
Copyright © 2020-2023  润新知