Wenn Sie sich für eine django Weg zur Lösung dieses Problems suchen, dann würde es so etwas wie folgt aussehen:
def create_user(request):
extra_questions = get_questions(request)
form = UserCreationForm(request.POST or None, extra=extra_questions)
if form.is_valid():
for (question, answer) in form.extra_answers():
save_answer(request, question, answer)
return redirect("create_user_success")
return render_to_response("signup/form.html", {'form': form})
class UserCreationForm(forms.Form):
username = forms.CharField(max_length=30)
password1 = forms.CharField(widget=forms.PasswordInput)
password2 = forms.CharField(widget=forms.PasswordInput)
def __init__(self, *args, **kwargs):
extra = kwargs.pop('extra')
super(UserCreationForm, self).__init__(*args, **kwargs)
for i, question in enumerate(extra):
self.fields['custom_%s' % i] = forms.CharField(label=question)
Wenn Sie einen jquery Lösung suchen, dann folgt die Sie tun können, auf Ihrem create_user ändern und ein Formular Antwort senden:
def create_user(request):
extra_questions = get_questions(request)
form = UserCreationForm(request.POST or None, extra=extra_questions)
if form.is_valid():
for (question, answer) in form.extra_answers():
save_answer(request, question, answer)
return redirect("create_user_success")
form_html = form.as_ul() #returns a form in html
return HttpResponse(form_html)
und dann mit jquery die Form html erhalten und fügt:
$('#submitform').click(function() {
$.ajax({
url: "getinfo.asp",
data: {
txtsearch: $('#appendedInputButton').val()
},
type: "POST",
dataType: "html",
success: function (data) {
var result = $('<div />').append(data).find('#showresults').html();
$('#showresults').html(result);
},
error: function (xhr, status) {
alert("Sorry, there was a problem!");
},
complete: function (xhr, status) {
//$('#showresults').slideDown('slow')
}
});
});
wow. Es gibt andere Fragen mit ähnlichem Thema und sie werden stattdessen upvoted. Http://stackoverflow.com/questions/6142025/dynamically-add-field-to-a-form – user1919