2017-12-20 3 views
0

Django Python 프로젝트에서 테스트 전자 메일을 보내고 django 문서를 따르려고한다. 아래 함수가 실행될 때 오류가 발생합니다 (이미지 첨부). 내가 뭘 잘못하고 있니? send_email()은 위치 인수 하나를 받지만 3이 주어진다. - Django Python

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

역 추적 : 내 질문을 명확히하기 위해뿐만 아니라 역 추적을 추가하고있다. 도움이 되었기 바랍니다.

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 
+0

'send_email' :

은 당신의 함수 정의를 변경

? 함수 시그니처가 하나의 인수를 예상한다는 것은 명백합니다. 명확하지 않은 것은 세 가지 인수로 호출하는 것입니다. –

+0

@JaredGoguen, 트레이스를 자세히 살펴 보도록하겠습니다. – Junaid

+0

@ JaredGoguen, 내 질문에 Traceback을 추가했습니다. 그게 도움이 될까요? – Junaid

답변

1

의견에서 지적했듯이이 코드는 관리 작업에 사용됩니다. 그러나 설명서의 Writing action functions 섹션에서 이러한 함수는 세 가지 인수를 취해야한다고 지적했습니다. 주어진 예 :

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

함수는 하나 개의 인수를 취하지만, 따라서 오류, 세 가지로 호출됩니다.

호출 무엇
def send_email(modeladmin, request, queryset): 
+0

좋은 소리입니다. 내가 그것을 시도하자. – Junaid

+0

그럼'RecursionError'와 충돌 할 것이다 –

+0

@NickT 어떻게 그렇게? 함수의 이름은 매우 유사하지만 가져온 함수와 동일하지 않습니다. –

관련 문제