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

Django 2.0中如何定义带查询参数的URL?

解决Django 2.0中查询参数的获取问题

嘿,我懂你的困惑啦!你想要实现的是URL查询参数(就是?search_term=arrow这种跟在?后面的键值对),但你现在在urls.py里写的是Django的路径参数语法,这俩完全不是一回事哦~

先搞清楚核心区别:

  • 你写的path('navigator/<str:search_term>', ...)对应的是这种URL:http://localhost:8000/navigator/arrow(参数直接嵌在URL路径里)
  • 你实际想要的?search_term=arrow属于查询参数,不需要在urls.py里定义路径规则,直接在视图函数里读取就行。

正确的实现步骤:

  1. 修正你的urls.py:
    只需要定义基础的navigator路径,不用加参数部分,另外注意导入路径的大小写(Django的模块是全小写的django.urls):

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('navigator/', views.GhNavigator, name='navigator'),
    ]
    
  2. 在视图函数views.py中获取查询参数:
    使用request.GET.get()方法来获取search_term,还可以设置默认值避免参数不存在时报错:

    def GhNavigator(request):
        # 获取search_term参数,默认值设为空字符串,防止无参数时抛出异常
        search_term = request.GET.get('search_term', '')
        
        # 这里可以添加你的业务逻辑,比如用search_term查询数据库
        # 示例:results = YourModel.objects.filter(title__icontains=search_term)
        
        # 如果需要把参数传递给模板,直接在上下文里传入即可
        return render(request, 'your_template.html', {'search_term': search_term})
    

这样当你访问http://localhost:8000/navigator?search_term=arrow时,视图里就能正确拿到search_term的值为arrow啦!

内容的提问来源于stack exchange,提问作者Abdul Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:26:37