如何在urls.py中配置形如localhost:8000/v1/user?id=1的URL?
实现带查询参数的URL(Django)
你要的localhost:8000/v1/user?id=1这类URL,其中?id=1属于查询参数,不需要在urls.py里直接定义匹配规则,只需配置路径部分,再在视图函数中获取参数即可,具体步骤如下:
1. 配置路径规则
项目根urls.py
先配置版本前缀,引入对应app的路由:
from django.urls import path, include urlpatterns = [ path('v1/', include('your_app.urls')), # 替换成你的app名称 ]
对应app的urls.py
定义user路径的路由:
from django.urls import path from . import views urlpatterns = [ path('user/', views.user_detail, name='user-detail'), ]
2. 在视图中获取查询参数
在app的views.py里编写视图函数,通过request.GET.get()获取id参数:
from django.http import HttpResponse def user_detail(request): user_id = request.GET.get('id') # 获取查询参数,无参数时返回None if not user_id: return HttpResponse('请提供id参数') # 这里可根据user_id执行数据库查询等业务逻辑 return HttpResponse(f'当前用户ID:{user_id}')
3. 测试访问
启动Django服务后,访问localhost:8000/v1/user?id=1,就能看到视图返回的对应内容。
补充说明
- 查询参数是可选的,如果需要强制要求
id参数,可在视图中增加校验逻辑(比如返回400错误)。 - 若要实现RESTful风格的路径参数(如
/v1/user/1),才需要在urls.py里定义path('user/<int:user_id>/', views.user_detail),但你需求的是带?id=1的查询参数,按上述步骤即可实现。
内容的提问来源于stack exchange,提问作者Prafulla
相关产品推荐
相关产品推荐

