Django url

urlpatterns = [
  url(正则表达式, views视图函数,参数,别名),
]

 

 

参数说明:

 

  • 一个正则表达式字符串
  • 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
  • 可选的要传递给视图函数的默认参数(字典形式)
  • 一个可选的name参数

 

http请求中产生两个核心对象:

        http请求:HttpRequest对象

        http响应:HttpResponse对象

所在位置:django.http

之前我们用到的参数request就是HttpRequest    检测方法:isinstance(request,HttpRequest)

 

 

1:

配置:url(r'^index', views.index),

例:

def index(self):

return render(self,'index.html')

 

 

2:

增加1个参数;使用括号

配置:url(r'^year/([0-9]{3,4})/$', views.year),

例:([0-9]{3,4}) 会传递给year

def year(self,year):

return HttpResponse(year+"year")

浏览器访问:

http://127.0.0.1/year/2017/

 

 

3:

增加2个参数

配置:url(r'^year/([0-9]{3,4})/([0-9]{1,4})', views.month),

例:([0-9]{3,4})/([0-9]{1,4}) 分别会传递给year,month

def month(self,year,month):

return HttpResponse(year+"year"+" "+month+"month")

浏览器访问:

http://127.0.0.1/year/2017/08/

 

 

 

4:

增加2个分组参数;view接收参数的时候,必须要跟分组参数定义名字相同

配置:url(r'^attr/(?P<id>[0-9]{2})/(?P<name>[0-9]{2})',views.arrt),

例:分组id(?P<id>[0-9]{2}) 和name (?P<name>[0-9]{2})分别传递给id,name

def arrt(self,id,name):

return HttpResponse('id:'+ id + "name:"+name)

浏览器访问:

http://127.0.0.1/attr/17/09/

 

 

5:

另外一种接收参数;增加1个参数,view接收参数的时候,必须要跟分组参数定义名字相同

配置:url(r'^self/',views.self,{'name':'good'}),

例:{'name':'good'} 值会传递给 name

def self(self,name):

return HttpResponse("name:"+name)

浏览器访问:

http://127.0.0.1/self/

 

 

 

6:

增加1个分组参数,在增加一个形式参数;view接收参数的时候,必须要跟分组参数定义名字和形式参数相同

配置:url(r'^js/(?P<id>[0-9]{2})',views.js,{'js':'GO'}),

例:分组id(?P<id>[0-9]{2})会传递给id,{'js':'GO'}会传递给js

def js(self,id,js):

return HttpResponse('id:'+id+"js:"+js)

浏览器访问:

http://127.0.0.1/js/17/

 

 

 

7:

增加别名,给html中的Form表单中的action使用

配置:url(r'^cs',views.cs,name='cname'),

例:cname会通过模版渲染后添加到Form表单中的action中,action中要{% url "cname" %}表单,写cname值不是写name

def cs(self):

if self.method == 'POST':

username = self.POST.get('username',None)

print(username)

return render(self,'cs.html')

html写法:

<form action={% url "cname" %} method="post">

<input type="text" name="username">

<input type="submit" value="submit">

</form>

渲染结果:

 

 

 URL 路由分发

from django.conf.urls import url,include

1 url(r'^app/', include('app.urls')),

 

 

 

app里面操作

from app import views

 

原文地址:https://www.cnblogs.com/ajaxa/p/9262190.html