You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中带查询字符串的URL模式配置及视图参数获取方法

嘿,我来帮你解决这个Django里的GET请求URL匹配和参数获取问题!

一、URL模式怎么写?

首先要明确:Django的URLconf 只匹配URL的路径部分(也就是?前面的内容),?后面的查询参数不需要写在正则表达式里。你的示例URL是/create-usecase/?usecase_name=test&...,所以只需要匹配/create-usecase/这个路径就行。

写法示例(推荐用path,更简洁):

在urls.py里添加:

from django.urls import path
from . import views

urlpatterns = [
    # 匹配/create-usecase/路径,关联到对应的视图函数
    path('create-usecase/', views.create_usecase, name='create-usecase'),
]

如果一定要用正则表达式(比如复杂路径场景),可以用re_path:

from django.urls import re_path
from . import views

urlpatterns = [
    re_path(r'^create-usecase/$', views.create_usecase, name='create-usecase'),
]

这里的正则^create-usecase/$表示严格匹配以create-usecase/开头并结尾的路径,完全忽略后面的查询参数。

二、视图函数里怎么获取这些参数?

Django会自动把GET请求的查询参数封装到request.GET对象里(这是一个类似字典的对象),你可以用get()方法安全地获取参数值。

视图函数示例:

from django.http import HttpResponse

def create_usecase(request):
    # 用get()方法获取参数,第二个参数是默认值,避免参数不存在时抛出KeyError
    usecase_name = request.GET.get('usecase_name', '')
    category = request.GET.get('category', '')
    sub_category = request.GET.get('sub_category', '')
    
    # 如果你确定某个参数一定存在,也可以直接用键取值,但不推荐(容易报错)
    # category = request.GET['category']

    # 这里可以写你的业务逻辑,比如保存数据、返回响应等
    print(f"收到的参数:UseCase名称={usecase_name},分类={category},子分类={sub_category}")

    return HttpResponse(f"已收到参数:{usecase_name}, {category}, {sub_category}")

额外说明:

  • 关于csrfmiddlewaretoken:这个是Django的CSRF验证令牌,通常POST请求才需要验证,GET请求里的这个参数你一般不需要在视图里处理,Django会自动忽略它。
  • 参数类型转换:如果category是数字类型,记得把获取到的字符串转成int,比如category = int(request.GET.get('category', 0))。

内容的提问来源于stack exchange,提问作者M.Sameh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:57:18