2014-10-01 2 views
0

여기 몇 가지 해답을 살펴 봤지만 제대로 작동하지 않습니다. 그가 웹 사이트에 가입 한 후 사용자 프로필을 저장할 모델 양식을 만들려고합니다. 문제는 양식을 렌더링하려고 할 때 빈 페이지와 오류가 발생하지 않는다는 것입니다. 어떤 도움을 많이 주시면 감사하겠습니다.Django ModelForm이 템플릿에서 렌더링되지 않습니다.

models.py

class Perfil(models.Model): 
    user = models.OneToOneField(User) 
    Sexo = models.CharField(max_length=100) 
    Direccion = models.CharField(max_length=100) 
    CP = models.CharField(max_length=100) 
    Ciudad = models.CharField(max_length=100) 
    Estado = models.CharField(max_length=100) 
    Pais = models.CharField(max_length=100) 
    Telefono = models.CharField(max_length=100) 
    Celular = models.CharField(max_length=100) 
    PaisPasaporte = models.CharField(max_length=100) 
    NumeroPasaporte = models.CharField(max_length=100) 
    VigenciaPasaporte = models.DateField(max_length=100) 
    ContactoEmergencia = models.CharField(max_length=100) 
    TelefonoEmergencia = models.CharField(max_length=100) 
    CorreoEmergencia = models.CharField(max_length=100) 
    Alergias = models.CharField(max_length=500) 

forms.py

class ProfileForm(forms.ModelForm): 
    class Meta: 
     model = Perfil 

views.py

@verified_email_required() 
def profile(request): 
    if request.method == "POST": 
     form = ProfileForm(request.POST) 
     if form.is_valid(): 
      perfil = form.save(commit=False) 
      perfil.user = request.user 
      perfil.save() 
      return HttpResponseRedirect("/profile/") 
     else: 
      return render(request, "explore/profile.html", {"form": form}) 
    return render(request, "explore/profile.html") 

그리고 마지막으로 내 HTML

<form class="profile" id="profile_form" method="post" action="" style="width: 50%;"> 
       {% csrf_token %} 
       {% for field in form %} 
        <table> 
        <colgroup> 
         <col style="width: 45%;"> 
         <col style="width: 10%;"> 
         <col style="width: 45%;"> 
        </colgroup> 
        <tr> 
         <td>{{ field.label_tag }}</td> 
         <td></td> 
         <td>{{ field }}</td> 
        </tr> 
        </table> 
       {% endfor %} 
      </form> 
,536,913,632 10

감사합니다.

답변

3

요청 유형이 POST 인 경우 양식을 보내주십시오. 페이지가 처음로드되면 기본적으로 GET 요청입니다. 따라서이 같은 문제

뭔가 작동합니다 : 당신이 전혀 else 절을 필요가없는

def profile(request): 
    form = ProfileForm() 
    if request.method == "POST": 
     form = ProfileForm(request.POST) 
     if form.is_valid(): 
      perfil = form.save(commit=False) 
      perfil.user = request.user 
      perfil.save() 
      return HttpResponseRedirect("/profile/") 

    return render(request, "explore/profile.html" {'form': form}) 

주 - 형태가 무효 인 경우, 자동 맥락에서 잘못된 양식을 전송하고 오류를 메시지는 잘 표시됩니다.

+0

나는 그것을 보지 못했다고 나는 믿을 수 없다. 고마워! – edalco9

관련 문제