Почему после отправки формы выдается ошибка 403? - PullRequest
1 голос
/ 30 апреля 2020

Я следил за проектом новостной рассылки. Я получил ошибку 403 Forbidden. Она хранит данные, но как только я нажимаю кнопку подписки, она показывает эту ошибку, если я не удаляю response=sg.send(message) и явно не отправляю почту. Но без этой строки приложение будет неполным.

проект / письмо / 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()})

проект / письмо / 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)"

проект / 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')
]

шаблоны / индекс. 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...