Неподдерживаемый тип(ы) операнда для +: 'WindowsPath' и 'str' проблема

Я работаю над групповым проектом для колледжа, используя django и python, однако я столкнулся с проблемой.

Я следую учебнику по рассылке новостей из плейлиста youtube, и хотя у него нет ошибок, вот какую ошибку я получаю.

Вот изображение ошибки

Вот код.

def newsletter_signup(request): form = newsletterUserSignUpForm(request.POST or None)

if form.is_valid():
    instance = form.save(commit=False)
    if newsletterUser.objects.filter(email = instance.email).exists():
        messages.warning(request, 'Your email already exists in our database', 'alert alert-warning alert-dismissible')
    else:
        instance.save()
        messages.success(request, 'Your email has been signed up to our Newsletter!', 'alert alert-success alert-dismissible')

    subject = "Thank you for joining our Newsletter"
    from_email = settings.EMAIL_HOST_USER
    to_email = [instance.email]

    with open(settings.BASE_DIR + "/templates/newsletters/sign_up_email.txt") as f:
        sign_up_message = f.read()
    message = EmailMultiAlternatives(subject=subject, body=signup_message, from_email = from_email, to_email = to_email)
    html_template = get_template("/templates/newsletters/sign_up_email.html").render()
    message.attach_alternative(html_templae, "text/html")
    message.send()

context = {
    'form': form,
}
template = "newsletters\sign_up.html"
return render(request, template, context)

Я понимаю, что видео может быть немного устаревшим, так как оно снято в 2017 году, поэтому любая помощь будет принята с благодарностью.

Возможно, вы захотите попробовать использовать os.path.join. Эта функция создает пути, соответствующие вашей операционной системе.

import os
path = os.path.join(settings.BASE_DIR,"/templates/newsletters/sign_up_email.txt")
with open(path) as f:
   # DO STUFF

Around the BASE_DIR setting started to use a Path [Python-doc] instead of a simple string, and you can not append a Path with a string. You can however use / operator [Python-doc] to join the path with a directory or filename, so you can use:

with open(settings.BASE_DIR / 'templates/newsletters/sign_up_email.txt') as f:
    # …
    pass
Вернуться на верх