Tenho problemas com Django CSRF. Quando tento registrar um novo usuário ou efetuar login, recebo o próximo erro: Cookie CSRF não definido. Além disso, na página de registro, o nome de usuário e o rótulo do site não são carregados corretamente, mas recebo símbolos como este: 'Ð˜Ð¼Ñ Ð¿Ð¾Ð »ÑŒÐ · овР° тел Ñ'.
Já tentei CSRF_COOKIE_SECURE = True, django.middleware.csrf.CsrfViewMiddleware, limpando os dados do navegador, meu {% csrf_token%} está colocado dentro do formulário. Alguém poderia me dar pelo menos algumas dicas sobre possíveis erros?
Meu código:
forms.py:
<form method="post" action="register/">
{% csrf_token %}
{{ user_form.as_p }}
{{ profile_form.as_p }}
views.py
def register(request):
c = {}
c.update(csrf(request))
registered = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
profile_form = UserProfileForm(data=request.POST)
if user_form.is_valid() and profile_form.is_valid():
user = user_form.save()
user.set_password(user.password)
user.save()
profile = profile_form.save(commit=False)
profile.user = user
profile.save()
registered = True
else:
print(user_form.errors, profile_form.errors)
else:
user_form = UserForm()
profile_form = UserProfileForm()
return render_to_response(
'register.html',
{'user_form': user_form, 'profile_form': profile_form, 'registered': registered}, c)
Obrigado pela sua consideração!
Não use render_to_response
, é obsoleto. Use em seu render
lugar.
return render(request,
'register.html',
{'user_form': user_form, 'profile_form': profile_form, 'registered': registered})
Você pode então remover estas linhas da visualização:
c = {}
c.update(csrf(request))
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras