2016-09-16 2 views
1

아주 간단한 웹 응용 프로그램을 만들기 위해 장고에서 작업하고 있습니다.Django - django.form이 아닌 양식에서 데이터 가져 오기

현재 사용자가 비트 단위로 정보 비트를 완성 할 수 있도록 양식 연속을 갖기 위해 노력 중입니다. 프레젠테이션을 실제로하고 싶었 기 때문에 처음에는 HTML로만 만들려고했습니다. 여기 내 코드가있다.

두 개의 템플릿 create_site.html과 create_cpe.html이 있습니다. 두 번째 페이지에서 무엇을 물어야 할지를 알기 위해서는 첫 페이지에서 정보를 얻을 필요가 있습니다. 여기

내 create_site.html

<body> 

<form action="{% url 'confWeb:cpe_creation' %}" method="post" class="form-creation"> 
    {% csrf_token %} 
    <div class = "form-group row"> 
     <label for="site_name" class="col-xs-3 col-form-label">Name of theSite</label> 
     <div class="col-xs-9"> 
      <input id="site_name" class="form-control" placeholder="Name" required="" autofocus="" type="text"> 
     </div> 
    </div> 
<button class="btn btn-lg btn-primary btn-block" type="submit">Créer</button> 
</form> 
</body> 

입니다 그리고 여기 내가이 모든 것을 할 사용하고있어 views.py입니다 : 내가하고 싶은 무엇

def site_creation(request): 

    template = loader.get_template('confWeb/create_site.html') 
    return HttpResponse(template.render(request)) 

def cpe_creation(request): 
    if request.method == "POST" : 
     print(request.POST) 

가이다 내보기 "cpe_creation"내 양식의 입력 값을 가져옵니다. 나는 "요청"객체로부터 정보를 얻으려고했지만 그 일을 처리하지 못했습니다. 어쩌면 나는 아주 기본적인 HTML 기술이 부족하지만 양식 정보가 요청 본문에있을 것이라고 생각했지만 그렇지 않았습니다 (또는 보이지 않았습니다).

또한 장고 양식을 사용해 보았습니다.하지만 문제는 양식이 어떻게 보이는지 정확하게 제어 할 수 없다는 것입니다. 입력을 만들면 그 크기와 같은 것을 말할 수 없습니다.

따라서 내 질문은 다음과 같습니다. - 제출 된 양식에서 데이터를 얻으려면 어떻게해야합니까? - 장고 양식으로해야하나요? 그렇게하면 입력의 CSS 클래스를 어떻게 제어 할 수 있습니까?

답변

3

템플릿에있는 양식의 입력란에는 요청에 전달할 name 속성이 있어야합니다.

그럼 당신은 다음과 같이보기에 그것을 얻을 수있을 것입니다 :

site_name = request.POST.get('site_name')

+0

감사합니다. 정확히 내가 찾고있는 것이 었습니다. 양식을 만드는 동안 "레이블"과 "입력"이 관련되도록 "for"및 "id"매개 변수를 사용하는 것이 가장 좋습니다. 정말 필요한가요? (왜냐하면 이름과 ID가 너무 많다고 생각하기 때문에) – Licia

+1

ID는 필수 항목이 아니며 이름이 필요합니다. 둘 다 가지고있는 것이 좋다. – sebb

1

귀하의 양식 필드에 이름 속성이 필요합니다. 당신이 장고 양식을 사용하려는 경우

  <input id="site_name" name="site_name" class="form-control" placeholder="Name" required="" autofocus="" type="text"> 

또는 명시 적으로 위젯을 정의하여 양식 필드의 CSS 클래스를 설정할 수 있습니다. 클래스 form-control에서 판단

class SiteForm(forms.Form): 
    site_name = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) 

, 난 당신이 부트 스트랩을 사용하고자하는 가정합니다. django-crispy-forms을 확인하십시오.이 스타일은 Django가 Bootstrap을 사용하여 정말 쉬운 스타일로 만들어줍니다.

관련 문제