Django url 传参的几种方式
-
path() 函数传参
- urls.py 文件中德参数名必须和 views.py 中的参数名一致
- 浏览器请求: http://127.0.0.1:8000/archive/2021/01/02/
# urls.py 文件, 下面这两种方式都可以传参 # <int:year> 这种方式限制了 url 的参数值必须是 int 类型, 这种方式可以限制 url 参数的数据类型 urlpatterns = [ path('archive/<year>/<month>/<day>/', views.home), path('archive/<int:year>/<int:month>/', views.home), ] # views.py 文件 def home(request, year='2021', month='07', day='15'): return HttpResponse(f'日期为: {year}-{month}-{day}')
-
re_path() 函数传参
- urls.py 文件中德参数名不需要和 views.py 中的参数名一致,根据参数位置自动匹配
- 浏览器请求: http://127.0.0.1:8000/archive/2021/01/02/
# urls.py 文件 # 该正则表达式限制了 url 年月日三个参数的长度和类型 urlpatterns = [ re_path('archive/d{4}/d{1,2}/d{1,2}/', views.home), ] # views.py 文件 def home(request, year='2021', month='07', day='15'): return HttpResponse(f'日期为: {year}-{month}-{day}')
-
关键字传参
-
GET请求
- GET请求在 views.py 文件中通过 request.GET.get('year') 方式获取 url 传入的参数
- 浏览器请求: http://127.0.0.1:8000/archive/date?year=2021&month=07&day=15
# urls.py 文件 urlpatterns = [ path('archive/<str:date>', views.home), ] # views.py 文件 def home(request, date): # 获取get请求传入的参数 year = request.GET.get('year') month = request.GET.get('month') day = request.GET.get('day') return HttpResponse(f'日期为: {year}-{month}-{day}')
-
POST请求
-