前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >24.Django路由规则

24.Django路由规则

作者头像
zhang_derek
发布2018-04-11 13:10:18
6820
发布2018-04-11 13:10:18
举报
文章被收录于专栏:有趣的django有趣的django

路由规则

1.基于正则的url

在templates目录下创建index.html、detail.html文件

(1)index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {% for k,value in user_dict.items %}
        <li><a href="/detail-{{ k }}.html" target="_blank">{{ value.name }}</a></li>
    {% endfor %}
</body>
</html>

(2)idetail.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h2>详细信息</h2>
    <h4>用户名:{{ detail_info.name }}</h4>
    <h4>邮箱:{{ detail_info.email }}</h4>
</body>
</html>

(3)views

代码语言:javascript
复制
from django.shortcuts import render,HttpResponse

USER_DICT = {
    '1':{'name':'root1','email':'root1@xxx.com'},
    '2':{'name':'root2','email':'root2@xxx.com'},
    '3':{'name':'root3','email':'root3@xxx.com'},
    '4':{'name':'root4','email':'root4@xxx.com'},
}
def index(request):
    return render(request,'index.html',{'user_dict':USER_DICT})

def detail(request,nid):
    detail_info = USER_DICT[nid]
    return render(request, "detail.html", {"detail_info": detail_info})

(4)urls

代码语言:javascript
复制
from django.conf.urls import url
from django.contrib import admin
from cmdb import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^detail-(\d+).html/', views.detail),
]

2.正则url分组

(1)url修改

代码语言:javascript
复制
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html/', views.detail),    
]

(2)views修改

url中是一个字典的格式,分组对应  {'nid':'\d+','uid':'\d+'}

代码语言:javascript
复制
def detail(request,**kwargs):
    print(kwargs)
    # {'nid':1,'uid':4}
    nid = kwargs.get('nid')
    detail_info = USER_DICT[nid]
    return render(request, "detail.html", {"detail_info": detail_info})

(3)login中也要对应

代码语言:javascript
复制
 {% for k,value in user_dict.items %}
        <li><a href="/detail-{{ k }}-4.html" target="_blank">{{ value.name }}</a></li>
 {% endfor %}

3.request.path_info获取当前客户端访问的路劲

(1)urls

代码语言:javascript
复制
from django.conf.urls import url,include
from django.contrib import admin
from cmdb import views

urlpatterns = [
    url(r'^index', views.index),
]

(2)views

代码语言:javascript
复制
def index(request):
    print(request.path_info)    #获取客户端当前的访问链接
    # / index
    return render(request,"index.html",{"user_dict":USER_DICT})

(3)inde.html

代码语言:javascript
复制
==> action="{{ request.path_info }}
代码语言:javascript
复制
<form action="{{ request.path_info }}" method="post">
    <p><input  name="user" type="text" placeholder="用户名"/></p>
    <p><input  name="password" type="password" placeholder="密码"/></p>
    <p><input type="submit" value="提交"/></p>
</form>

4.name

对路由关系进行命名,根据此名称生成自己想要的URL

views

代码语言:javascript
复制
def index(request,*args,**kwargs):
    return render(request,"index.html")

urls

代码语言:javascript
复制
from django.conf.urls import url
from django.contrib import admin
from cmdb import views

urlpatterns = [
    # url(r'^first/', views.index, name='i1'),   #第一种
    # url(r'^second/(\d+)/(\d+)/', views.index,name='i2'),   #第二种
      url(r'^third/(?P<pid>\d+)/(?P<nid>\d+)/',views.index,name='i3'),    #第三种
]

index.html

代码语言:javascript
复制
        第一种
        <form action="{% url 'i1' %}" method="post">
        第二种
        <form action="{% url 'i2' 1 2 %}" method="post">
        第三种
        <form action="{% url "i3" pid=1 nid=9 %}" method="post">

            <p><input name="user" type="text" placeholder="用户名"/></p>
            <p><input name="password" type="password" placeholder="密码"/></p>
            <p><input type="submit" value="提交"/></p>
        </form>

 5.路由分发

主程序urls.py

代码语言:javascript
复制
from django.conf.urls import url,include
from django.contrib import admin
from cmdb import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^cmdb/', include('cmdb.urls')),
]

cmdb下的urls.py

代码语言:javascript
复制
from django.conf.urls import url
from django.contrib import admin
from cmdb import views

urlpatterns = [
    url(r'^time/',views.time),
]

访问: http://127.0.0.1:8000/cmdb/time/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 路由规则
    • 1.基于正则的url
      • 2.正则url分组
        • 3.request.path_info获取当前客户端访问的路劲
          • 4.name
            •  5.路由分发
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档