Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Django Forms Forms Validate a Form in a View

Sagar Thakkar
Sagar Thakkar
8,814 Points

It looks task one is not passing

i tried below solution combination please help

1 > edited send_mail() and added send_lead to line no 23 without kwargs 2> edited send_mail() and added send_lead to line no 23 with kwargs 3> non edited send_mail() and added send_lead to line no 23 without kwargs 4> non edited send_mail() and added send_lead to line no 23 with kwargs now i have no clue

myproject/views.py
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import render

from . import forms


def send_lead(email, url):
    send_mail(
        'Lead from {}'.format(email),
        '{} submitted {}'.format(email, url),
        email,
        ['kenneth@teamtreehouse.com']
    )


def lead_form(request):
    form = forms.LeadShareForm()
    if request.method == 'POST':
        form = forms.LeadShareForm(request.POST)
        if form.is_valid():
            send_lead(**form.cleaned_data["link"])
            return HttpResponseRedirect(reverse("lead"))
    return render(request, 'lead_form.html', {'form': form})

1 Answer

Ryan S
Ryan S
27,276 Points

Hi Sagar,

send_lead() takes two arguments, but you are trying to unpack one key-value pair.

Normally you wouldn't need to specify the keys if you wanted to unpack a dictionary in a function call. But there is a keyword mismatch here. send_lead() takes the arguments "email" and "url", but the cleaned_data dictionary has the keys "email" and "link".

To get around this, you can simply input the values individually:

send_lead(form.cleaned_data['email'], form.cleaned_data['link'])

Hope this helps.