실제로 사용자 이름, 전자 메일, 패스 번호 & 확인을 포함하는 등록 양식이 있습니다. 새 필드를 추가하고 싶습니다. Telefono(영어로 전화하기, excuseme) 및 fullname. 내가하려고했던내 등록 양식에 필드 추가하기
그것을 할 수 있지만, 문제가 발생했습니다 : 나는 Telefono 필드가 동일한 문제를 가지고 있다고 생각합니다
'fullname' is an invalid keyword argument for this function
은. 나는이 필드들을 views.py와 forms.py에 추가한다. 내 구성을 찾아보세요 :
views.py :
from django.shortcuts import render_to_response
from django.template import RequestContext
from dracoin.apps.synopticup.models import card
from dracoin.apps.home.forms import ContactForm,LoginForm,RegisterForm
from django.core.mail import EmailMultiAlternatives
from django.contrib.auth.models import User
from django.contrib.auth import login,logout,authenticate
from django.http import HttpResponseRedirect
from django.core.paginator import Paginator, EmptyPage, InvalidPage
def register_view(request):
form = RegisterForm()
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
fullname = form.cleaned_data['fullname']
usuario = form.cleaned_data['username']
email = form.cleaned_data['email']
password_one = form.cleaned_data['password_one']
password_two = form.cleaned_data['password_two']
telefono = form.cleaned_data['telefono']
u = User.objects.create_user(fullname=fullname,username=usuario,email=email,password=password_one,telefono=telefono)
u.save()
return render_to_response('home/thanks_register.html',context_instance=RequestContext(request))
else:
ctx = {'form':form}
return render_to_response('home/register.html',ctx,context_instance=RequestContext(request))
ctx = {'form':form}
return render_to_response('home/register.html',ctx,context_instance=RequestContext(request))
forms.py : 사전에
from django import forms
from django.contrib.auth.models import User
class RegisterForm(forms.Form):
fullname = forms.CharField(label="Nombre completo",widget=forms.TextInput())
username = forms.CharField(label="Nombre de usuario",widget=forms.TextInput())
email = forms.EmailField(label="Correo Electronico",widget=forms.TextInput())
password_one = forms.CharField(label="Password",widget=forms.PasswordInput(render_value=False))
password_two = forms.CharField(label="Confirmar password",widget=forms.PasswordInput(render_value=False))
telefono = forms.RegexField(regex=r'^\+?1?\d{9,15}$',
error_message = ("Only celular phone number. Must be entered in the format: '+999999999'. Up to 15 digits allowed."))
def clean_username(self):
username = self.cleaned_data['username']
try:
u = User.objects.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError('Nombre de usuario ya existe')
def clean_email(self):
email = self.cleaned_data['email']
try:
u = User.objects.get(email=email)
except User.DoesNotExist:
return email
raise forms.ValidationError('Email ya registrado')
def clean_password_two(self):
password_one= self.cleaned_data['password_one']
password_two= self.cleaned_data['password_two']
if password_one == password_two:
pass
else:
raise forms.ValidationError('passwords no coincidentes')
apologizeme 내가 뭔가를 간과합니다.
감사합니다.
django 인증 사용자 모델에는 필드 이름 fullname이 없습니다. 여기를 확인하십시오 : https://github.com/django/django/blob/master/django/contrib/auth/models.py#L374. 그러나 get_full_name()은 리턴 타입이 전체 이름을 얻는이 모델의 메소드입니다. – ruddra
완전히 관련이 없지만,'register_view' 전에'def'를 잊어 버렸습니다. 구문 오류가 없으므로 여기에 코드를 붙여 넣었을 때 누락 된 것으로 추측됩니다. – Paco
사실 파코, 내 잘못 붙여 넣기 xD – Jhonny