アクセスをリクエストするために、私のdjangoアプリケーションの登録ページを作成したいと考えています。言い換えれば、フォームを送信すると、ユーザーとuser.is_active = Falseが作成されます。管理者として私は彼らのアクセスを承認することができます。ユーザー名が "firstname.lastname"になるDjangoユーザー登録
しかし、私はそれらのユーザー名を入力することはできません。代わりに私は自分のユーザー名をfirstname.lastnameにしたい。同じ名前の人がサインアップしようとしているとは考えにくい(アプリが少人数の場合) - 最後に数字を追加する必要があります。
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
first_name = form.cleaned_data.get('first_name')
last_name = form.cleaned_data.get('last_name')
raw_password = form.cleaned_data.get('password1')
username = form.cleaned_data.get('username')
user = authenticate(username=username, password=raw_password)
user.is_active = False
user.save()
return render(request, 'registration/signedup.html', {'user': user})
else:
return render(request, 'registration/signup.html', {'form': form, 'invalid': 'Please try again.'})
else:
form = SignUpForm()
return render(request, 'registration/signup.html', {'form': form})
とサインアップフォーム::
class SignUpForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
last_name = forms.CharField(max_length=30, required=False, help_text='Optional.')
email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2',)
と、この私のサインアップページのHTMLのように:
<form method="post" autocomplete="off">
{% csrf_token %}
<table class='login' width='400'>
{% for field in form %}
<tr>
<td width='200' class='loginrow'>{{ field.label_tag }}</td>
<td width='180' class='loginrow'>{{ field }}</td>
{% for error in field.errors %}
<p style="color: red">{{ error }}</p>
{% endfor %}
</tr>
{% endfor %}
</table>
<button type="submit">Sign up</button>
</form>
私はサインアップビューを使用して、現時点でこれを行います
私は自分のフォームフィールドからユーザー名を削除しようとしましたが、私たちの見解では、username変数をfirs_name + '。' + last_nameとして作成していますer = authenticate()はnoneを返します。
ユーザーがユーザー名を入力せずに自動的にユーザー名を生成する方法はありますか?私はHTMLページでjavascript関数を使用することを考えていましたが、名前を連結する隠された 'username'入力タグも考えましたが、これを動作させることはできません。
おかげ
は、私はこれを実行しようとしましたが、request.POSTはのQueryDictと – trouselife
編集残念ながら不変です:dict-dictに変更する(request.POST.iterlists()) – giaco
フォームはまだ有効ではありません – trouselife