1
resposta

[Errno 22] Invalid argument

Boas,

Não consigo fazer nenhum registo. Estou a ter o erro abaixo:

OSError at /registar/
[Errno 22] Invalid argument: "C:\\Users\\martins.domingos\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\site-packages\\django\\contrib\\admin\\templates\\<WSGIRequest: POST '\\registar\\'>"

O Meu código é:

view.py:

from django.shortcuts import render, redirect
from django.views.generic.base import View
from usuarios.forms import RegistarUsuarioForm
from django.contrib.auth.models import User
from django.template.loader import render_to_string
from perfis.models import Perfil




# Create your views here.
class RegistarUsuariosView(View):
    """docstring for RegistarUsuariosView"""

    template_nome = 'registar.html'
    def  get(self, request):
        return render (request,self.template_nome)

    def  post(self, request):

        form = RegistarUsuarioForm (request.POST)

        if form.is_valid():
            dados_form = form.data

            usuario = User.objects.create_user (dados_form ['nome'],dados_form ['email'],dados_form ['senha'])

            perfil = Perfil (nome = dados_form ['nome'], 
                             email = dados_form ['email'], 
                             telefone = dados_form ['telefone'],
                             empresa = dados_form ['empresa'],
                             usuario= usuario).save()
            return redirect('index')

        return render_to_string (request,self.template_nome, {'form', form})
        #return render (request,self.template_nome, {'form', form})

forms.py:

from django import forms
from django.contrib.auth.models import User

class RegistarUsuarioForm(forms.Form): # Gerdar de forms.Form
    #Classe RegistarUsuarioForm

    nome = forms.CharField(required=True)
    email = forms.EmailField(required = True)
    senha = forms.CharField(required=True)
    telefone = forms.CharField(required=True)
    empresa = forms.CharField(required=True)

    #Sobrescrever método is_valid do forms.Form
    def is_valid (self):
        valid = True
        if not super(RegistarUsuarioForm, self).is_valid(): 
            self.adiciona_erro('Por fvaor, verifica os dados informados')
            valid = False

        user_exists = User.objects.filter(username=self.data['nome']).exists()

        #Verificar se o usuario existe
        if user_exists:
            self.adiciona_erro('Usuário já existe')
            valid = False

        return valid

    def adiciona_erro(self, message):
        erros = self._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.utils.ErrorList())
        erros.append(message)
1 resposta

A mensagem de erro existe a mensagem registar, mas se não me engano o template se chama registrar. Parece haver divergências de nomes.