2012-04-24 1 views
1

우선 save 메소드를 사용하여 양식을 사용하여 django에 등록하고 있습니다. 어떤 오류도 없지만 양식을 제출하는 것은 아닙니다. Models.py :Django에 등록 양식이 제출되지 않았습니다

from django.db import models 
from django.contrib.auth.models import User 
class UserProfile(models.Model): 
    user=models.OneToOneField(User) 
    meta_keywords=models.CharField("Meta Keywords",max_length=255, 
      help_text="Comma delimited set of keywords of meta tag") 
    meta_description=models.CharField("Meta Description",max_length=255, 
      help_text='Content for description meta tag') 

    def __unicode__(self): 
     return "User Profile for: "+self.username 

    class Meta: 
     ordering=['-id'] 

forms.py

from django.contrib.auth.forms import UserCreationForm 
from django import forms 
from django.contrib.auth.models import User 
from accounts.models import UserProfile 
from pprint import pprint 


class RegisterationForm(UserCreationForm): 
    email = forms.EmailField(label = "Email") 
    fullname = forms.CharField(label = "Full name") 

    class Meta: 
     model = User 
     fields = ("username", "fullname", "email",) 

    def save(self, commit=True): 
     user = super(RegisterationForm, self).save(commit=False) 
     first_name, last_name = self.cleaned_data["fullname"].split() 
     user.first_name = first_name 
     user.last_name = last_name 
     user.email = self.cleaned_data["email"] 
     if commit: 
      user.save() 
     return user 

views.py

from django.contrib.auth.forms import UserCreationForm 
from django.template import RequestContext 
from django.shortcuts import render_to_response,get_object_or_404 
from django.core import urlresolvers 
from django.http import HttpResponseRedirect 
from django.contrib.auth.decorators import login_required 
from accounts.forms import RegisterationForm 
#from accounts.forms import UserProfile 

def register(request,template_name="account/register.html"): 
    if request.method=='POST': 
     postdata=request.POST.copy() 
     form=RegisterationForm(postdata) 
     if form.is_valid(): 
      form.save 
      un=postdata.get('username','') 
      pw=postdata.get('password','') 
      from django.contrib.auth import login,authenticate 
      new_user=authenticate(username=un,password=pw) 
      if new_user and new_user.is_active: 
       login(request,new_user) 
       url=urlresolvers.reverse('dashboard') 
       return HttpResponseRedirect(url)    
    else: 
     form=RegisterationForm() 
    page_title="User Registration" 
    return render_to_response(template_name,locals(),context_instance=RequestContext(request)) 


@login_required 
def dashboard(request): 
    pass 

@login_required 
def settings(request): 
    pass 

templatefile (register.html) :

<div class="register_form"> 
    <form method="post" action="." class="cart"> 
     {% csrf_token %} 
    {{form.as_p}} 
    <input type="submit" value="Register" name="submit" alt="Register" /> 
    </form> 
</div> 
다음은 내 코드입니다

양식을 제출 한 후 다시 양식을 제외한 어떤 것을 표시하지 마십시오. db에는 새 레코드가 삽입되지 않으며 관리자 패널에서도 확인했습니다.

모든 것이 잘되기 때문에 문제가 될 수 있다는 점이 궁금합니다. 문제를 디버깅하는 좋은 방법이 있습니까? 일부는 pprint와 같은 것이지만,이 상황에서 어떻게 디버깅 할 것인가?

+0

하나는 모듈 방식이며, 등록을 처리하는 많은 사전 구축 장고 모듈이있다. 가장 일반적으로 사용되는 것은 장고 등록입니다. 또 다른 모듈은 등록을 포함하여 많은 공통적으로 사용되는 요소를 통합하는 Pinax입니다. –

+0

@LieRyan 제안 해 주셔서 감사합니다. 등록은 다를 수 있습니다. 내 경우에는 – Hafiz

+1

에서 지금까지 본 것 중에서 특히 현재 등록 흐름에 대해 특별한 것은없는 것처럼 보입니다. 나중에 고유 한 흐름을 추가하더라도 일반적으로 기존 모듈을 사용하고 기능을 확장하는 것이 더 쉽습니다. –

답변

5

form.save() 

내가 신경 오전에 추측을

form.save 

보자! 날 증명 해줘! (또는 부분적으로 오른쪽)

나는 그것이 옳은지 틀린 지 보통 파이썬의 traceback 모듈을 사용합니다. 정말 사용하기 간단합니다. 장고의 가장 큰 특징의

http://docs.python.org/library/traceback.html

+0

그리고 당신의 야생 추측이 작동했습니다 :) – Hafiz

+1

:) 다행했습니다. – CppLearner