1
私はこれを1週間以上にわたって成功裏に取り組んできました。私はモーダルの中に入れたい登録フォームを持っています。モーダルは、タイトル、送信ボタンをうまく描画しますが、登録フォーム自体は表示されません。ジャンゴフォームがBoostrapモダル内に表示されない
しかし私がブラウザでmysite/registerに行くと、登録フォームは完全にレンダリングされますが、別のタブでそれ自体をレンダリングしたくないので、私はモーダルでそれを必要とします。
ご協力いただければ幸いです。
は、ここに私のコードです:
forms.py
from django import forms
from apps.accounts.models import CustomUser
class RegistrationForm(forms.ModelForm):
email = forms.EmailField(widget=forms.TextInput, label='email')
username = forms.CharField(widget=forms.TextInput, label='username')
password1 = forms.CharField(widget=forms.PasswordInput, label='Enter your password')
password2 = forms.CharField(widget=forms.PasswordInput, label='Re-type your password')
first_name = forms.CharField(widget=forms.TextInput, label='First Name')
last_name = forms.CharField(widget=forms.TextInput, label='Last Name')
class Meta:
model = CustomUser
fields = ['email', 'username', 'password1', 'password2', 'first_name', 'last_name']
def clean(self, password1, password2):
cleaned_data = super(RegistrationForm, self).clean()
if password1 in self.cleaned_data and password2 in self.cleaned_data:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError("Passwords don't match. Please enter both fields again")
return self.cleaned_data
def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.set_password(self.cleaned_data['password1'])
if commit:
user.save()
return user
views.py
def register(request):
"""
User Registration View
"""
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
CustomUser = form.save()
CustomUser.save()
return redirect('home.html')
else:
form = RegistrationForm()
return render_to_response('register.html', {
'form': form,
}, context_instance=RequestContext(request))
def get_profile(request, username):
user = CustomUser.objects.get(pk=1).username
return render_to_response(request, 'profile.html', {'username': username, 'user': user})
urls.py
urlpatterns = patterns ('',
url(r'register$', 'apps.accounts.views.register', name='register'),
url(r'^profile/(?P<username>\w+/$)', get_profile, name='profile'),
)
register.html
{% load staticfiles %}
{% load crispy_forms_tags %}
{% block body %}
<div class="modal" id="modal-1">
<div class="modal-dialog">
<div class="modal-content">
<form enctype="multipart/form-data" method="post" action="">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3 class="modal-title">Sign-up</h3>
</div>
<div class="modal-body">
{% csrf_token %}
{{ form|crispy }}
</div>
<div class="modal-footer">
<input type='submit' class="btn btn-primary" value="Register" />
</div>
</form>
</div>
</div>
</div>
{% endblock %}
base.html
.....
<li><a data-toggle="modal" data-target="#modal-1" href="">sign up</a></li>
{% include 'register.html' %}
を私はちょうどあなたのビューを試してみました。フォームはまだ表示されません。 – ngx311
個々のフォームフィールド '{{form.email}}'をレンダリングして、 '' crispy'が問題を引き起こしていないことを確認できますか? – WayBehind
いいえ、まだ表示されません。 – ngx311