2016-05-05 3 views
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">&times;</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' %} 

答えて

1

ないあなたのポストであなたのインデントはあなたのviews.pyファイルに持っているものであるが、少なくとも、ここで間違っていると、フォームがレンダリングされていないか確認します。

はこの試してみてください。

def register(request): 
    form = RegistrationForm(request.POST or None) 
    if request.method == 'POST':   
     if form.is_valid(): 
      CustomUser = form.save() 
      CustomUser.save() 
      return redirect('home.html') 
    else: 
     return render(request, 'register.html', {'form': form}) 
+0

を私はちょうどあなたのビューを試してみました。フォームはまだ表示されません。 – ngx311

+0

個々のフォームフィールド '{{form.email}}'をレンダリングして、 '' crispy'が問題を引き起こしていないことを確認できますか? – WayBehind

+0

いいえ、まだ表示されません。 – ngx311

関連する問題