Câu trả lời:
Sử dụng một biểu mẫu trong một dạng xem giải thích khá nhiều điều đó.
Mẫu chuẩn để xử lý biểu mẫu trong dạng xem trông như sau:
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,
})
Bạn chọn đi:
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 ý: trường được truy cập ngay khi có sẵn.
form['my_field'].value()
để truy cập các giá trị biểu mẫu theo yêu cầu POST. Một số ngày: |
Bạn có thể thực hiện việc này sau khi xác thực dữ liệu của mình.
if myform.is_valid():
data = myform.cleaned_data
field = data['field']
Ngoài ra, hãy đọc các tài liệu django. Chúng thật hoàn hảo.
Để lấy dữ liệu từ biểu mẫu gửi yêu cầu đăng bài, bạn có thể làm như thế này
def login_view(request):
if(request.POST):
login_data = request.POST.dict()
username = login_data.get("username")
password = login_data.get("password")
user_type = login_data.get("user_type")
print(user_type, username, password)
return HttpResponse("This is a post request")
else:
return render(request, "base.html")
Tôi sử dụng django 1.7+ và python 2.7+, giải pháp ở trên không hoạt động. Và giá trị đầu vào trong biểu mẫu có thể được sử dụng POST như bên dưới (sử dụng cùng một biểu mẫu ở trên):
if form.is_valid():
data = request.POST.get('my_form_field_name')
print data
Hi vọng điêu nay co ich.
class ContactForm(forms.Form): my_form_field_name = forms.CharField()