Почему я получаю Запрещено (токен CSRF отсутствует или неверен)? - PullRequest
0 голосов
/ 27 января 2019

Я получаю Запрещено (токен CSRF отсутствует или неверен) Я пробовал разные решения, найденные при переполнении стека, но я не могу это исправить!Я пытался использовать render_to_response, и когда я это делаю, я получаю эту ошибку:

Обычно это вызвано неиспользованием RequestContext.«{% Csrf_token%} был использован в шаблоне, но контекст»

Это Forms.py

from django import forms


class AskForm(forms.Form):
    name = forms.CharField(
        max_length=30,
        widget=forms.TextInput(
            attrs={
                'placeholder': 'Write your name here',
                'class': 'ask-page-input',
                'label': 'Student Name',
            }
        ))
    email = forms.EmailField(
        max_length=254,
        widget=forms.EmailInput(
            attrs={
                'placeholder': 'Write your Email here',
                'class': 'ask-page-input',
                'label': 'Email',
            }
        ))
    subject = forms.CharField(
        max_length=50,
        widget=forms.TextInput(
            attrs={
                'placeholder': 'Write your Question or Related Subject here',
                'class': 'ask-page-input',
                'label': 'Subject',
            }
        ))

    message = forms.CharField(
        max_length=2000,
        widget=forms.Textarea(
            attrs={
                'placeholder': 'Write your message here',
                'class': 'ask-page-input',
                'label': 'Message',
            }
        ))

    source = forms.CharField(  # A hidden input for internal use
        max_length=50,  # tell from which page the user sent the message
        widget=forms.HiddenInput()
    )

    def clean(self):
        cleaned_data = super(ContactFrom, self).clean()
        name = cleaned_data.get('name')
        email = cleaned_data.get('email')
        subject = cleaned_data.get('subject')
        message = cleaned_data.get('message')
        if not name and not email and not subject and not message:
            raise forms.ValidationError('You have to write something!')

Это views.py

from django.shortcuts import render, redirect, render_to_response
from forms import AskForm

def askpage_form(request):
    if request.method == 'POST':
        form = AskForm(request.POST)
        if form.is_valid():
            pass  # does nothing, just trigger the validation
    else:
        form = AskForm()
    return render(request, "ask.html",  {'form': form,  })

Это HTML-файл

  <!DOCTYPE html>
  <html lang="en" dir="ltr">
    <head>
      <meta charset="utf-8">
      <title>Physics Quizzes Ask</title>
    </head>
    <body>
      <form method="post">
        {% csrf_token %}
        {{ form }}
        <button type="submit" name="button">Submit</button>
      </form>
    </body>
  </html>

1 Ответ

0 голосов
/ 27 января 2019

В вашем form.py Измените это

def clean(self):
    cleaned_data = super(ContactForm, self).clean()

На

def clean(self):
    cleaned_data = super(AskForm, self).clean()

Мои формы отображаются так: enter image description here

...