1.path('index', views.index), # 经过类的方式建立url映射 2.path('home', views.Home.as_view()), # 经过正则表达式的方式 注意这种方式不能经过path的方式关联,不然正则表达式无效,经过 from django.conf.urls import url,而后经过url(regx,views,kwargs,name)进行url的正则表达式的匹配 3.url(r'detail-(\d+)',views.detail), 4.url(r'detail-(\d+)-(\d+)',views.detail), 5.url(r'detail-(?P<nid>\d+)',views.detail)
urls.pyhtml
urlpatterns = [ url(r'detail-(\d+)-(\d+)',views.detail), ]
views.py正则表达式
# 方式一: def detail(request,nid,uid): pass # 方式二: def detail(request,*args,**kwargs): pass
以上方式,nid和uid关联的参数,适合调用参数有关系,好比调用'http://127.0.0.1:8080/detail-1-2',则 nid = 1, uid = 2;方式二的args = (1,2),kwargs = {}django
但是这不是咱们想要的,咱们如何让nid和uid和传递的参数关联上,仍是经过正则表达式解决参数关联问题ui
urls.pyurl
urlpatterns = [ url(r'detail-(?P<nid>\d+)-(?P<uid>\d+)',views.detail) ]
views.pyspa
# 方式一: def detail(request,nid,uid): pass
def detail(request,uid,nid):
pass # 方式二: def detail(request,*args,**kwargs): pass
这样不管咱们如何更换参数的位置,咱们的获取的nid都是'/detail-1-2'的第一个参数值,uid始终为第二个参数值;而才是方式二的参数变为 args=() kwargs={'nid': 1,'uid':2}code
urls.pyhtm
urlpatterns = [ url('homemodule',views.home,name='m1'), url(r'disovermodule/(\d+)/(\d+)',views.discover,name='m2'), url(r'messagemodule/(?P<nid>\d+)/(?P<uid>\d+)',views.message,name='m3') ]
views.pyblog
def func(request,*args,**kwargs): from django.url import reverse url1 = reverse('m1') #/homemodule/ url2 = reverse('m2',args=(1,2)) #/discovermodule/1/2 url3 = reverse('m3',kwargs={'nid':3,'uid':4}) # /messagemodule/3/4
xxx.html路由
{% url 'm1' %} #/homemodule
{% url 'm2' 1 2 %} #/discovermodule/1/2
{% url 'm3' nid=3 uid=4 %} #/messagemodule/3/4
注意获取当前URL
request.path_info