さて、私はこのHTMLフォームを持っています:
<form class="form" action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" value="register">Login</button>
</form>
そして、この Django ビュー:
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
new_user = form.save()
return HttpResponseRedirect("/success/")
else:
form = UserCreationForm()
return render_to_response("signup.html", {'form': form,}, RequestContext(request))
これは完全に正常に機能します。ただ、オリジナルのフォルムをもう少しカスタマイズできるようにしたいです。そのため、その方法を理解するために、まず form.as_p 関数のソース コードを調べ、手動で複製してみます。私はこれで終わります:
<form class="form" action="" method="post">
{% csrf_token %}
<p>
<label for="id_username">Username:</label>
<input id="id_username" type="text" name="username" maxlength="30">
</p>
<p>
<label for="id_password1">Password:</label>
<input type="password" name="password1" id="id_password">
</p>
<p>
<label for="id_password2">Password confirmation:</label>
<input type="password" name="password2" id="id_password2">
</p>
<button type="submit" value="register">Login</button>
</form>
ただし、これは機能しません。なぜそうしないのか理解できません。form.as_p が出力として上記を持っている場合、理論的にはビューでうまく動作するはずですよね? どんな助けでも大歓迎です。