2014-12-21 2 views
0

django 사이트에서 폼 문서를 보았습니다. DB에 데이터를 추가하는 방법이 궁금합니다.django 폼 정보를 DB에 입력하는 방법

def get_name(request): 
    if request.method == 'POST': 
     form = NameForm(request.POST) 
     if form.is_valid(): 
      return HttpResponseRedirect('/thanks/') 
    else: 
     form = NameForm() 

    return render(request, 'name.html', {'form': form}) 

지금 내가 함수 (가) 데이터베이스에 이름을 추가하는 방법을 볼 필요 : 문서에 주어진 함수 예 That`s

<form action="/your-name/" method="post"> 
    <label for="your_name">Your name: </label> 
    <input id="your_name" type="text" name="your_name" value="{{ current_name }}"> 
    <input type="submit" value="OK"> 
</form> 

다음 HTML That`s

~ 같이 보일거야.

답변

2

NameForm은 모델입니다. 이 경우에는 단지 save() ing가 데이터를 db로 가져옵니다. 예를 들어

if form.is_valid(): 
    # modifying 
    name_object = Name.objects.get(some_field=some_field) 
    name_object.name_field = form.cleaned_data['your_name'] 
    name_object.save() 

    # or creating 
    new_name_object = Name(name_field=form.cleaned_data['your_name']) 
    new_name_object.save() 
    return HttpResponseRedirect('/thanks/') 
+0

양식 클래스없이 만들 수 있습니까? 예를 들어 : 데프 get_name (요청) : VAR = 이름 (request.POST) 반환 HttpResponseRedirect를 ('/ 감사 /') – TomerI

0

:

내 자신의 모델 양식이 정상적인 형태 인 경우

if form.is_valid(): 
    form.save() 
    return HttpResponseRedirect('/thanks/') 

은, 당신은/모델 객체에 할당/전달 된 값을 잡아 작성해야 이 같은 : 내보기에 너무

class MyModel(models.Model): 
    var = models.CharField(max_length=10) 

:

,
if form.is_valid(): 
    var = form.cleaned_data['var'] 
    # do insertion or modification or deletion 
    obj = MyModel.objects.create(var=var) 
    obj.save() 

자세한 내용은 매뉴얼을 참조하십시오.

+0

이봐, 은 장고 양식을 사용하지 않고 그것을 할 수 있습니까? --class MyModel (models.Model) : NAME = models.CharField (MAX_LENGTH = 10) --def add_name (요청) VAR = request.POST [ '예 이름 '] obj = MyModel.ojects.crate (이름 = var) obj.save() – TomerI

+0

@ 토머스 예입니다. 장고 양식은 단지 당신을 위해 유효성 검사를 제공하므로 당신 스스로 할 필요가 없습니다. 원시 데이터를 정리하는 편리한 도구입니다. –

+0

시도했지만 작동하지 않는 것 같습니다. 작동을 위해해야하는 일을 나열하여 놓친 것이 있는지 확인할 수 있습니까? 감사합니다. – TomerI

관련 문제