Django:动态更改电子邮件收件人
我在网站上制作了一份反馈表。我制作了一个名为“globalapp”的模型,该模型具有未来管理员的所有设置,它有电子邮件、地址和电话字段,没有添加或删除此对象的权限 在我看来,我有一个简单的代码:Django:动态更改电子邮件收件人,django,django-forms,django-views,Django,Django Forms,Django Views,我在网站上制作了一份反馈表。我制作了一个名为“globalapp”的模型,该模型具有未来管理员的所有设置,它有电子邮件、地址和电话字段,没有添加或删除此对象的权限 在我看来,我有一个简单的代码: def index(request): seos = SEO.objects.get(id__exact=1) socs = Social_networks.objects.get(id__exact=1) globs = globalapp.objects.get(id__ex
def index(request):
seos = SEO.objects.get(id__exact=1)
socs = Social_networks.objects.get(id__exact=1)
globs = globalapp.objects.get(id__exact=1)
index = Index.objects.get(id__exact=1)
form = ContactForm(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
sender = form.cleaned_data['sender']
message = form.cleaned_data['message']
fille = form.cleaned_data['fille']
recepients = ['test@test.ru']
from_email, to = sender, recepients
html_content = loader.render_to_string('globalapp/chunks/email_tpl.html',
{'subject': subject, 'sender':sender, 'message':message, 'fille':fille})
msg = EmailMultiAlternatives(subject, html_content, from_email, to)
msg.send()
return render(request, 'globalapp/index.html', {'seos': seos,
'socs': socs,
'globs': globs,
'index': index,
'form': form })
现在正在发送邮件test@test.ru. 我想从globalapp对象中获取电子邮件字段,并将其放在“recepients”中,以便管理员能够在需要时更改电子邮件地址
我得到的最好的东西是,我通过queryset获得电子邮件价值,包括:
email = globalapp.objects.filter(id=1).values('email')
通过邮寄,我只有到:{'email':'test@gmail.com'}
所以,问题是如何从queryset对象中获取字符串,以用于动态电子邮件收件人的更改?或者我可以选择用另一种方式
另外,我还有一个小问题,我还不能解决:在我按下提交按钮后,我的页面重新加载,我不需要它,我可以以某种方式禁用它吗?这里有两个问题:
.filter(..)
,过滤器意味着您不会得到一个字典,而是一个字典的QuerySet
。它可以是空的、包含一个或多个元素。由于您在id=…
上进行筛选,因此它最多包含一个元素,但仍需要一些额外的逻辑才能将其从查询集中展开,因此我们最好使用。在此处获取(…)
;及
dict['email']
email = globalapp.objects.values('email').get(id=1)['email']
email=globalapp.objects.values('email').get(id=1)['email']
或者更优雅:
email = globalapp.objects.values_list('email', flat=True).get(id=1)
email=globalapp.objects.values\u list('email',flat=True).get(id=1)
另外,我还有一个小问题,我还不能解决:在我按下提交按钮后,我的页面重新加载,我不需要它,我可以以某种方式禁用它吗
不使用表单,因为这正是浏览器应该执行的任务:发送HTTP请求并加载响应。但是您可以使用AJAX调用来执行HTTP请求,而网页仍然保持不变