send_mail() 得到参数 'fail_silently' 的多个值 Django 联系表单只传递消息而不是名称或主题
send_mail() got multiple values for argument 'fail_silently' Django contact form only passing message not name or subject
所以我正在尝试使用 django 创建一个联系表单,但它可以工作,但仅适用于消息,我正在尝试为发件人姓名和他们的电子邮件创建一个区域。
这是我的 views.py
中的工作代码
from django.shortcuts import render
from django.core.mail import send_mail
from django.conf import settings
def index(request):
if request.method == 'POST':
message = request.POST('message')
send_mail('Contact Form',
message,
settings.EMAIL_HOST_USER,
['myemail@gmail.com'],
fail_silently=False)
return render(request, 'app/index.html')
和html
<h3>Contact Form</h3>
<form method="post" action="{% url 'index' %}">
{% csrf_token %}
<input type="text" name="name" placeholder="Your Full Name." />
<textarea name="message" placeholder="Message..."></textarea>
<input type="submit" />
</form>
如果我尝试设置
name = request.POST.get('name')
消息下方 = request.POST.get('message')
然后在 send_mail 函数中的消息后命名
我收到错误 send_mail() got multiple values for argument 'fail_silently'
我查看了文档,看到了几个不同的东西,但没有一个是我需要的。
更好的方法是创建 HTML 邮件格式页面。并传递该 HTML 页面中的所有数据。此 HTML 格式可用作 send_mail 'html_message' 字段中的消息。请检查以下代码段是否相同:
views.py:
def index(request):
if request.method == 'POST':
message = request.POST.get('message')
name = request.POST.get('name')
ctx = {
'name' : name,
'message' : message
}
message = render_to_string('mail.html', ctx)
send_mail('Contact Form',
message,
settings.EMAIL_HOST_USER,
['myemail@gmail.com'],
fail_silently=False, html_message=message)
return render(request, 'app/index.html')
mail.html :
<body>
<h1>This is HTML page for mail</h1>
<p>{{name}}</p>
<p>{{message}}</p>
</body>
所以我正在尝试使用 django 创建一个联系表单,但它可以工作,但仅适用于消息,我正在尝试为发件人姓名和他们的电子邮件创建一个区域。
这是我的 views.py
中的工作代码from django.shortcuts import render
from django.core.mail import send_mail
from django.conf import settings
def index(request):
if request.method == 'POST':
message = request.POST('message')
send_mail('Contact Form',
message,
settings.EMAIL_HOST_USER,
['myemail@gmail.com'],
fail_silently=False)
return render(request, 'app/index.html')
和html
<h3>Contact Form</h3>
<form method="post" action="{% url 'index' %}">
{% csrf_token %}
<input type="text" name="name" placeholder="Your Full Name." />
<textarea name="message" placeholder="Message..."></textarea>
<input type="submit" />
</form>
如果我尝试设置
name = request.POST.get('name')
消息下方 = request.POST.get('message')
然后在 send_mail 函数中的消息后命名
我收到错误 send_mail() got multiple values for argument 'fail_silently'
我查看了文档,看到了几个不同的东西,但没有一个是我需要的。
更好的方法是创建 HTML 邮件格式页面。并传递该 HTML 页面中的所有数据。此 HTML 格式可用作 send_mail 'html_message' 字段中的消息。请检查以下代码段是否相同:
views.py:
def index(request):
if request.method == 'POST':
message = request.POST.get('message')
name = request.POST.get('name')
ctx = {
'name' : name,
'message' : message
}
message = render_to_string('mail.html', ctx)
send_mail('Contact Form',
message,
settings.EMAIL_HOST_USER,
['myemail@gmail.com'],
fail_silently=False, html_message=message)
return render(request, 'app/index.html')
mail.html :
<body>
<h1>This is HTML page for mail</h1>
<p>{{name}}</p>
<p>{{message}}</p>
</body>