2011-01-16 22 views

Trả lời

86

Using a form in a view giải thích khá nhiều về nó.

Các mô hình tiêu chuẩn để xử lý một hình thức trong một cái nhìn trông như thế này:

def contact(request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = ContactForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): # All validation rules pass 
      # Process the data in form.cleaned_data 
      # ... 

      print form.cleaned_data['my_form_field_name'] 

      return HttpResponseRedirect('/thanks/') # Redirect after POST 
    else: 
     form = ContactForm() # An unbound form 

    return render_to_response('contact.html', { 
     'form': form, 
    }) 
+0

Ví dụ về dạng ràng buộc đó: 'lớp ContactForm (forms.Form): my_form_field_name = forms.CharField()' –

21

Bạn có thể làm điều này sau khi bạn xác nhận dữ liệu của bạn.

if myform.is_valid(): 
    data = myform.cleaned_data 
    field = data['field'] 

Ngoài ra, hãy đọc tài liệu django. Họ là hoàn hảo.

+10

Còn b4 thì bạn làm sạch dữ liệu của mình? – Sevenearths

+2

Trước khi bạn làm sạch dữ liệu của bạn tất cả chỉ có request.POST được lưu trữ với cá thể biểu mẫu. Làm sạch là những gì liên kết dữ liệu POST với các trường biểu mẫu. Trước khi làm sạch bạn sẽ phải làm việc với request.POST. – freb

+0

Có thể lấy giá trị của formField nếu giá trị ban đầu được thiết lập không? – Fydo

3

Tôi sử dụng django 1.7+ và python 2.7+, giải pháp trên liều không hoạt động. Và giá trị đầu vào theo hình thức có thể được nhận sử dụng POST như sau (sử dụng hình thức tương tự ở trên):

if form.is_valid(): 
    data = request.POST.get('my_form_field_name') 
    print data 

Hope this helps.

21

Hãy chọn:

def my_view(request): 

    if request.method == 'POST': 
     print request.POST.get('my_field') 

     form = MyForm(request.POST) 

     print form['my_field'].value() 
     print form.data['my_field'] 

     if form.is_valid(): 

      print form.cleaned_data['my_field'] 
      print form.instance.my_field 

      form.save() 
      print form.instance.id # now this one can access id/pk 

Lưu ý: lĩnh vực này được truy cập ngay khi nó có sẵn.

+1

Câu trả lời này tóm tắt tốt nhất tất cả các tùy chọn - truy cập dữ liệu POST thô, các trường biểu mẫu không được xác nhận và các trường biểu mẫu đã được xác nhận cuối cùng. – DataMania

Các vấn đề liên quan