offu / WeRoBot

WeRoBot 是一个微信公众号开发框架

Home Page:https://werobot.readthedocs.io/zh_CN/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CornerCase优化

LJxFFFF opened this issue · comments

commented

def werobot_view(request):

Django 2.x 以上版本中,如果api带有正则,会将正则匹配出的值传给请求处理函数。(https://docs.djangoproject.com/en/3.1/topics/http/urls/#how-django-processes-a-request)
例如:
url(r'^api/(v1|v2|v3)/robot/', make_view(robot.robot)
这个urlpattern中, 函数werobot_view接收到的参数是 request对象和正则表达式(v1|v2|v3)匹配出的值。

如果请求转发到robot对象,错误日志如下
Traceback (most recent call last): File "/opt/venvs/nscloud-megi-api/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/venvs/nscloud-megi-api/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) TypeError: werobot_view() takes 1 positional argument but 2 were given

修改成werobot_view参数为 (request, *args, **kwargs) 应该可以兼容这个corner case

Issue tracker 只用于反馈 bug 和 feature request。在提问前请仔细阅读我们的文档,并推荐阅读《提问的智慧》:https://github.com/ruby-china/How-To-Ask-Questions-The-Smart-Way/blob/master/README-zh_CN.md