send_email()需要1个位置参数,但是给出了3个 - Django Python

问题描述 投票:0回答:1

我正在尝试从我的Django python项目发送测试电子邮件,并遵循django文档。执行以下功能时出现错误(附加图像)。我做错了什么?

https://docs.djangoproject.com/en/2.0/topics/email/

from django.core.mail import send_mail, BadHeaderError
from django.http import HttpResponse, HttpResponseRedirect

    def send_email(request):
        subject = request.POST.get('subject', 'Test')
        message = request.POST.get('message', 'Test Message')
        from_email = request.POST.get('from_email', '[email protected]')
        if subject and message and from_email:
            try:
                send_mail(subject, message, from_email, ['[email protected]'])
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return HttpResponseRedirect('/contact/thanks/')
        else:
            # In reality we'd use a form class
            # to get proper validation errors.
            return HttpResponse('Make sure all fields are entered and valid.')

错误:

enter image description here

回溯:我正在添加一个Traceback以澄清我的问题。希望能帮助到你

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/contrib/admin/options.py" in wrapper
  574.                 return self.admin_site.admin_view(view)(*args, **kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/contrib/admin/sites.py" in inner
  223.             return view(request, *args, **kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapper
  62.             return bound_func(*args, **kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view
  142.                     response = view_func(request, *args, **kwargs)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/utils/decorators.py" in bound_func
  58.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/contrib/admin/options.py" in changelist_view
  1596.                 response = self.response_action(request, queryset=cl.get_queryset(request))

File "/home/jimtiaz/PycharmProjects/TestAoo/venv/lib/python3.6/site-packages/django/contrib/admin/options.py" in response_action
  1330.             response = func(self, request, queryset)

Exception Type: TypeError at /admin/home/something
Exception Value: send_email() takes 1 positional argument but 3 were given
django python-3.x pycharm
1个回答
1
投票

正如您在评论中指出的那样,此代码用于管理操作。但是,在文档的Writing action functions部分中,它指出这样的函数应该采用三个参数。给出的例子:

def make_published(modeladmin, request, queryset):
    queryset.update(status='p')

你的函数只接受一个参数,但是用三个调用,因此错误。

将您的函数定义更改为:

def send_email(modeladmin, request, queryset):
© www.soinside.com 2019 - 2024. All rights reserved.