提交表单后,为什么会显示403禁止错误?

时间:2020-04-30 17:18:42

标签: django

我正在关注新闻通讯应用程序项目。我收到403禁止的错误。它正在存储数据,但是一旦我单击“订阅”按钮,它就会显示此错误,除非我删除response=sg.send(message)并强迫发送邮件。

project / letter / views.py

def random_digits():
    return "%0.12d" % random.randint(0, 999999999999)

@csrf_exempt
def new(request):
    if request.method =='POST':
       sub = Subscriber(email=request.POST['email'], conf_num=random_digits())
       sub.save()
       message = Mail(
                      from_email=settings.FROM_EMAIL,
                      to_emails= sub.email,
                      subject='Newsletter Confirmation',

                      html_content='Thank you for signing up for my email newsletter! \
                                    Please complete the process by \
                                    <a href="{}/confirm/?email={}&conf_num={}"> clicking here to \
                                    confirm your registration</a>.'.format(request.build_absolute_uri('/confirm/'),
                                                                           sub.email,
                                                                           sub.conf_num))

       sg = SendGridAPIClient(settings.SENDGRID_API_KEY)
       response = sg.send(message) 
       return render(request, 'index.html', {'email': sub.email, 'action': 'added', 'form': SubscriberForm()})

    else:
       return render(request, 'index.html', {'form': SubscriberForm()})

project / letter / models.py

class Subscriber(models.Model):
email = models.EmailField(unique=True)
conf_num = models.CharField(max_length=15)
confirmed = models.BooleanField(default=False)

def __str__(self):
    return self.email + " (" + ("not " if not self.confirmed else "") + "confirmed)"

project / urls.py

from django.contrib import admin
from django.urls import path
from letter import views

urlpatterns = [
      path('admin/', admin.site.urls),
      path('new/', views.new, name='new')
]

templates / index.html

      <div class="container">
        <div class="col-12">
            <h1>Email Newsletter</h1>
        </div>
        <div class="col-12">
            {% if email %}
            <p>{{ email }} has been {{ action }}.</p>
            {% endif %}
        </div>
    {% if form %}
        <div class="col-12 col-md-4">
            <form method="post" >
                {% csrf_token %}
                {{ form }}
                <br>
                <Input type="submit" class="btn btn-success" value="submit">Subscribe! 
            </form>
        </div>
    {% endif %}
    </div>

0 个答案:

没有答案