您的位置:首页 > 编程语言 > Go语言

Django入门(六)   动态URL

2016-03-14 16:06 393 查看
多级url虽然可以在多个app的时候将各个应用进行归类。现在有这么一种情况,就是app01里面的views.py里面定义了大量的函数。这样的话我们势必要在app01的urls.py里也要根据函数的数量编辑绑定信息。一个函数一条绑定的信息的对应写下去。为了避免这种可怕的事情,我们就需要使用动态url来处理这种请求。所谓的动态url就是可以通过正则表达式匹配用户输入的url内容,将url当做参数传递给后端的python函数进行处理。

首先我们在app01应用的views.py文件里新建一个函数dynamic_url()用于将接接收到的url内容进行拼接

/app01/views.py

from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here.

def dynamic_url(request,arg1,arg2):
return HttpResponse(arg1+arg2)


修改mydjango目录下的urls.py,用正则表达式编辑匹配app01这个以后的匹配规则
/mydjango/urls.py
#!/usr/bin/env python
# coding:utf-8
from django.conf.urls import url,include
from django.contrib import admin
#记得导入app01
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
#括号里的内容就是传给dynamic_url的参数,这里表示匹配两个任意数字,并把数字传给函数
url(r'^dynamic_url/(\d+)/(\d+)$', views.dynamic_url),
#匹配所有url的规则一定要放在最后
url(r'^', include('app01.urls')),
]



注意括号里的内容是以按先后顺序传递给python函数的
下面我们测试一下效果



如上图所致。我们url里面最后的两个数被以参数的形式传入了函数并打印到页面上了。

如果我们对参数传递的顺序有特殊的要求,以往以字典的形式匹配的内容具体对应某个参数我们可以在urls.py文件里匹配url的时候使用?P<arg>关键字来实现,下面我们只修改urls.py就可以了

/mydjango/urls.py
#!/usr/bin/env python
# coding:utf-8
from django.conf.urls import url,include
from django.contrib import admin
#记得导入app01
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
# url(r'^dynamic_url/(\d+)/(\d+)$', views.dynamic_url),
#指定第一个变量传递给函数的arg2参数,第二个变量传递给arg1参数
url(r'^dynamic_url/(?P<arg2>\d+)/(?P<arg1>\d+)$', views.dynamic_url),
#匹配所有url的规则一定要放在最后
url(r'^', include('app01.urls')),
]



再次刷新刚才的url




在url必变的情况,参数传递的顺序已经改变了。这就是动态url。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  入门 Django (六)