Неподдерживаемый тип(ы) операнда для +: '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 django-3.0 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