我正在尝试在模式窗口中创建一个简单的联系表单,并在开始时向控制台发送电子邮件,但是它不起作用。我已经准备好一切。
我已经正确设置了电子邮件后端,因为我可以从控制台发送电子邮件。 打开模式时,网站的URL不变。与此有关吗?
这就是我在控制台中得到的内容
[02/Jul/2019 22:30:22] "GET /contact/ HTTP/1.1" 200 1224
[02/Jul/2019 22:30:29] "POST / HTTP/1.1" 200 2229
views.py
def email(request):
if request.method == "POST":
form = ContactForm(request.POST)
if form.is_valid():
mail = form.cleaned_data["from_email"]
subject = form.cleaned_data["subject"]
message = form.cleaned_data["message"]
send_mail(subject, message, mail, ["example@gmail.com"], fail_silently=False)
messages.success("Done")
return redirect("homepage")
else:
form = ContactForm()
return render(request, "home_page/contact_form.html", {"form": form})
forms.py
class ContactForm(forms.Form):
from_email = forms.EmailField(required=True)
subject = forms.CharField(required=True)
message = forms.CharField(widget=forms.Textarea)
urls.py
urlpatterns = [
path('', views.home, name='homepage'),
path('contact/', views.email, name='contact')]
和html
{% load crispy_forms_tags %}
<h1>Leave me a message</h1>
<form method="post" action="">
{% csrf_token %}
{{ form|crispy }}
<div class="form-actions">
<button>Send</button>
</div>
</form>
修改
添加负责打开模式的代码: home.html
<a href="{% url 'contact' %}" rel="modal:open"><i class="far fa-envelope fa-3x"></i></a>
我的联系表单中的已修改操作,但未发送电子邮件并在新页面上打开了联系表单
action="{% url 'contact' %}"
[03/Jul/2019 06:31:30] "GET /contact/ HTTP/1.1" 200 1233
[03/Jul/2019 06:31:37] "POST /contact/ HTTP/1.1" 200 1372
答案 0 :(得分:0)
您的表单似乎指向您的主页而不是电子邮件视图。尝试将action=""
更改为action="/contact/"
,或者使用更合适的django方式action="{% url 'contact' %}"
。
更新:
如果视图收到POST
请求并发回200,则代码有问题。尝试在“ if form.is_valid()”中添加“ else”。现在看来该表单未通过验证。