Токен CSRF отсутствует, когда он есть
У меня есть форма, содержащая внутри различные объекты формы из файла forms.py. Однако, когда я пытаюсь отправить форму, появляется сообщение "csrf verification failed"
Вот полный шаблон (извините за беспорядок, я структурирую js позже перед запуском)
Вот мой models.py для аккаунта
вот мой forms.py
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms
from .models import *
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = "__all__"
exclude =['likes', 'dislikes', 'blocked']
class AccountForm(forms.ModelForm):
class Meta:
model = Account
fields = '__all__'
exclude = ['stripe_cus', 'user', 'nationality', 'is_active']
widgets = {
'dating_type': forms.CheckboxSelectMultiple(),
'hobbies': forms.CheckboxSelectMultiple(),
'target_ethnicity': forms.CheckboxSelectMultiple()
}
class ShowoffPictures(forms.ModelForm):
class Meta:
model=AccountPicture
fields = ['image']
class User_Form(UserCreationForm):
class Meta:
model = User
fields = ['first_name', 'last_name', 'username','email', 'password1', 'password2']
labels = {
'first_name':''
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for i in self.fields:
self.fields[i].widget.attrs.update({'required':''})
self.fields['username'].widget.attrs.update({'autofocus': False})
views.py
def create_account(request):
u_form = User_Form()
a_form = AccountForm()
a_pictures = ShowoffPictures()
if request.method == "POST":
print(request.POST)
u_f = User_Form(request.POST)
a_f = AccountForm(request.POST, request.FILES)
print(u_f, a_f)
print(u_f.errors, a_f.errors)
context = {
'u_form': u_form,
'a_form': a_form,
'a_pics': a_pictures,
}
return render(request, f"{md}/create_account.html", context)
Любая помощь будет высоко оценена. Спасибо
В вашем js ,
$('form').find('input, textarea, select').val('');
выше строки опустошите все поля ввода, включая csrf_token.
Либо исключите поле ввода csrf_token, либо включите только обязательные поля.
Код ::
$('form').find('input[name!='csrfmiddlewaretoken'], textarea, select').val('');