Django学习-6-路由系统

1、url(r‘^index/‘, views.index),        函数处理

url(r‘^home/‘, views.Home.as_view()),           类方法处理

2、url(r‘^detail-(\d+).html‘, views.detail),         动态路由,位置参数

<a href="/detail-{{key}}"></a>

def detail(request,nid):

3、url(r‘^detail-(?P<nid>\d+)-(?P<uid>\d+).html‘, views.detail)        动态路由,命名参数(将URL第一个匹配的给nid),而后台函数处理时,第一个数一定是nid

PS: def detail(request, *args,**kwargs):

pass

实战:

a.

url(r‘^detail-(\d+)-(\d+).html‘, views.detail),

def func(request, nid, uid):

#不用id直接获取值是应为python有内置的函数id()

#,如果使用ID接收参数,那么原生的id函数将被重写

pass

def func(request, *args):

args = (2,9)

def func(request, *args, **kwargs):

args = (2,9)

b.

url(r‘^detail-(?P<nid>\d+)-(?P<uid>\d+).html‘, views.detail)

def func(request, nid, uid):

pass

def funct(request, **kwargs):

kwargs = {‘nid‘: 1, ‘uid‘: 3}

def func(request, *args, **kwargs):

args = (2,9)

4、 name

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

①url(r‘^asdfasdfasdf/‘, views.index, name=‘i1‘),->

<form action="{%url :‘i1‘%}"> /index/                    如果想要和当前URL一样 需要使用path_info变量  {{request.path_info}}

<form action="{%url :‘i1‘2 %}"> /index/2/

<form action="{%url :‘i1‘nid=2 uid=3 %}"> /index/2/3/

②url(r‘^yug/(\d+)/(\d+)/‘, views.index, name=‘i2‘),

③url(r‘^buy/(?P<pid>\d+)/(?P<nid>\d+)/‘, views.index, name=‘i3‘),

2,3是动态的URL,不能用1的方法指定。只能用

<form action="{{ request.path_info }}">

反向生成URL

④url(r‘^yug/(\d+)/(\d+)/‘, views.index, name=‘i2‘)

from django.urls import reverse                                    根据名字反转生成URL,函数处理使用

v = reverse("i2",args)=(90,80)

v就等于 [ *,*,*,*:*/yug/90/80/ ]

def func(request, *args, **kwargs):

from django.urls import reverse

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/

注:

# 当前的URL

request.path_info

☆5、多级路由            一个APP需要路由到另一个APP时

project/urls.py

from django.conf.urls import url,include

from django.contrib import admin

urlpatterns = [

url(r‘^cmdb/‘, include("app01.urls")),

#   /cmdb/**的URL转发给  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),

]

时间: 2024-11-09 03:15:19

Django学习-6-路由系统的相关文章

Django进阶(路由系统、中间件、缓存、Cookie和Session

路由系统 1.每个路由规则对应一个view中的函数 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage), url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}), 2.根据app对路由规则进行一次分类 rl(r'^web/',include('web.urls')), 1.每个路由规则对应

django学习之模板系统

django模板系统学习笔记之for 在for标签里面,有以下知识点: forloop.counter forloop.counter0 forloop.first forloop.last forloop.revcounter forloop.revcounter0 froloop.parentloop empty 下面我们举例学习: 首先到我们的工程目录下,敲入: python manage.py shell # forloop.counter from django.template im

Django基础之路由系统

Django路由系统分为一级路由和二级路由. 一级路由 静态路由 如下图中admin和home 动态路由 如下图中news,year_news,page(形参)和turbo(实参) 二级路由 1.在全局urls中的路由配置如下: 2.在第二个APP中设置路由如下: 在第二个APP中views如下: 请求结果分别如下: 原文地址:https://www.cnblogs.com/hanxiaobei/p/8322062.html

Django URL(路由系统)

Django URL Django 1.11版本 URLconf官方文档 URL配置(URLconf)就像 Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 一.URLconf 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 参数说明:

Django之URL路由系统

一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 基本格式  1 2 3 4 5 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参

Django入门2:路由系统

1.单一路由对应 url(r'^index/', views.index), # FBV url(r'^home/', views.Home.as_view()), # CBV 2.基于正则的路由 1 url(r'^detail-(\d+).html', views.detail), 2 3 url(^'^detail-(\d+)-(\d+).html',views.detail), 4 ''' 5 严格按照位置参数的顺序传入参数,如果在实际环境中,def detail(request,nid,

路由系统

路由系统 根据Django约定,一个WSGI应用里最核心的部件有两个:路由表和视图.Django框架 的核心功能就是路由:根据HTTP请求中的URL,查找路由表,将HTTP请求分发到 不同的视图去处理: 路由系统分类很多,常见的有基本单一路由,正则路由,带额外参数路由,二层三层路由还有通过反射机制来完成的动态路由. 1.单一路由 url(r'^index$', views.index), 2.基于正则的路由 url(r'^index/(\d*)', views.index), url(r'^ma

Django学习系列之路由系统

一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django.conf.urls import url,include from django.contrib import admin #导入app下的view函数 from learn import views urlpatterns = [ url(r'^admin/', admin.site.urls)

自动化运维Python系列之Django路由系统、Ajax请求

路由系统 路由系统负责分析处理用户请求网址内容,向后视图函数分发处理任务,根据对应的处理函数处理完成后给用户return模板渲染结果:路由系统分类很多,常见的有基本单一路由,正则路由,带额外参数路由,二层三层路由还有通过反射机制来完成的动态路由. 1)单一路由 url(r'^admin/', admin.site.urls) 2)基于正则的路由 url(r'^detail/(\d+)/', views.detail), url(r'^detail2/(?P<p1>\d+)/(?P<x2&