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

Django正则URL配置报错:视图函数参数不匹配问题求助

Django URL正则匹配触发视图参数错误的解决办法

你的问题出在正则表达式的捕获分组上:r'^(readme|help)$'里的括号是捕获分组,Django会自动把分组匹配到的内容(比如访问/readme时的"readme",访问/help时的"help")作为第二个参数传递给视图函数,但你的readme视图只定义了request这一个参数,所以就抛出了"takes 1 positional argument but 2 were given"的错误。

给你三种解决办法:

方法1:改用非捕获分组(推荐正则场景)

把正则里的括号改成(?:...),这样分组只会用于匹配,不会捕获内容传递给视图:

urlpatterns = [
    re_path(r'^(?:readme|help)$', readme),
]

方法2:修改视图接受额外参数

如果需要用到匹配到的内容,或者不想改正则,可以给视图添加额外参数(哪怕不用):

# 接受任意额外参数,通用性强
def readme(request, *args, **kwargs):
    return HttpResponse('My test', content_type='text/plain')

# 或者明确指定参数名
def readme(request, page_name):
    # 可以在这里根据page_name做不同逻辑,比如返回不同内容
    return HttpResponse('My test', content_type='text/plain')

方法3:用path代替正则(推荐简单场景)

如果只是两个固定URL映射到同一视图,直接用path写两条规则更直观,不用正则:

from django.urls import path

urlpatterns = [
    path('readme', readme),
    path('help', readme),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:16:09