Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:动态更改电子邮件收件人_Django_Django Forms_Django Views - Fatal编程技术网

Django:动态更改电子邮件收件人

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

我在网站上制作了一份反馈表。我制作了一个名为“globalapp”的模型,该模型具有未来管理员的所有设置,它有电子邮件、地址和电话字段,没有添加或删除此对象的权限

在我看来,我有一个简单的代码:

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请求,而网页仍然保持不变