저는 Django를 처음 사용합니다. 이름, 이메일, 전화 번호, 메시지가 포함 된 양식을 만들었습니다. html 파일의 일부로 사용할 때 양식이 제대로 작동합니다. 제대로 작동하는 html 형식의 코드 :
<html>
<head></head>
<body>
<!--Message Form here-->
<form method='POST' action='/support/'> {% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-success" value="Send Message" />
</form>
<!--Message Form ends here-->
</body>
</html>
이 html을 기본 클래스로 확장 한 다음 부트 스트랩 CSS를 html에 추가하면 제출 버튼이 작동하지 않으므로 양식이 제대로 제출되지 않습니다 (나중에 제공되는 코드).
보기에 대한 코드 :
def support(request):
if request.method == 'POST':
from django.core.mail import send_mail
form = SupportMessageForm(request.POST or None)
if form.is_valid():
name = form.cleaned_data['name']
sender = form.cleaned_data['email']
telephone = form.cleaned_data['telephone']
subject = "Support Form - Message"
message = "From: " + name + " ( " + sender + " ) " + "Phone: " + telephone + "\n\n"
message += form.cleaned_data['message']
recipients = ['#SECRET#']
save_it = form.save(commit=False)
save_it.save()
result = "Your message has been delivered. Thank you for contacting us! We will get in touch very soon.."
try:
send_mail(subject, message, sender, recipients)
except smtplib.SMTPException as e:
result = str(e)
return render(request, "support.html", {"result": result, "style": "display: block", 'form': form})
else:
return render(request, "support.html", {"result": "Failed to send the message. Please validate your data. ",
"style": "display: block", 'form': form})
else:
form = SupportMessageForm()
return render_to_response('support.html', {'form': form}, context_instance=RequestContext(request))
위의 양식 코드를 다음과 같은 확장 된 html 파일에 넣을 때 :
{% extends "base.html" %}
{% block title %}Support{% endblock %}
{% load staticfiles %}
{% block body_block %}
<section>
<!-- Page Content -->
<div class="container">
<!-- Page Heading/Breadcrumbs -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">Our Support
<small>Providing the highest quality of services</small>
</h1>
<ol class="breadcrumb">
<li><a href="index.html">Home</a>
</li>
<li class="active">Contact</li>
</ol>
</div>
</div>
<!-- /.row -->
<!--Support Form here-->
<div class="row">
<div class="col-md-8">
<h3>Email & web support</h3>
<div class="center status alert">{{ result }}</div>
<form method='POST' action='/support/'> {% csrf_token %}
{{ form.as_p }}
<input type="submit" class="btn btn-success" value="Send Message" />
</form>
<!--Support Form ends here-->
</div>
</div>
<!--Fomr div-s end here-->
<!-- /.row -->
<hr>
<!-- Footer -->
<footer>
<div class="row">
<div class="col-lg-6">
<p>Connect to us on:</p>
<ul class="list-unstyled list-inline list-social-icons">
<li>
<a href="#"><i class="fa fa-linkedin-square fa-2x"></i></a>
</li>
<li>
<a href="#"><i class="fa fa-facebook-square fa-2x"></i></a>
</li>
</ul>
</div>
</div>
</footer>
</div>
<!-- /.container -->
</section>
{% endblock %}
양식 단추 "메시지 보내기"가 응답하지 않습니다. 역 추적 오류가 없습니다. 양식이 db에 저장되지 않거나 이메일로 전송되지 않습니다. 내가 어디로 잘못 가고 있습니까?
다음 코드가 작동했습니다.
<!--Support Form here-->
<div class="row">
<div class="col-md-8">
<h3>Telephone Support</h3>
</div>
<div class="col-md-6">
<h3>Email & Web Support</h3>
<div class="center status alert alert-success">{{ result }}</div>
<form method='POST' action='/support/'> {% csrf_token %}
<!--{{ form.as_p }}--><!--Commented by SOmdip because form is drawn by hand instead-->
{{ form.non_field_errors }}
<div class="fieldWrapper">
{{ form.name.errors }}
<label for="{{ form.name.id_for_label }}">Name:</label><br />
{{ form.name }}
</div>
<div class="fieldWrapper">
{{ form.email.errors }}
<label for="{{ form.email.id_for_label }}">Email:</label><br />
{{ form.email }}
</div>
<div class="fieldWrapper">
{{ form.telephone.errors }}
<label for="{{ form.telephone.id_for_label }}">Telephone:</label><br />
{{ form.telephone }}
</div>
<div class="fieldWrapper">
{{ form.message.errors }}
<label for="{{ form.message.id_for_label }}">Message:</label><br />
{{ form.message }}
</div>
<input type="submit" class="btn btn-success" value="Send Message" />
</form>
<!--Support Form ends here-->
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다