ฉันจะรับค่าจากฟิลด์ฟอร์มใน django framework ได้อย่างไร ฉันต้องการทำสิ่งนี้ในมุมมองไม่ใช่ในเทมเพลต ...
ฉันจะรับค่าจากฟิลด์ฟอร์มใน django framework ได้อย่างไร ฉันต้องการทำสิ่งนี้ในมุมมองไม่ใช่ในเทมเพลต ...
คำตอบ:
การใช้ฟอร์มในมุมมองอธิบายได้ค่อนข้างดี
รูปแบบมาตรฐานสำหรับการประมวลผลฟอร์มในมุมมองมีลักษณะดังนี้:
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,
})
เลือกของคุณ:
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
หมายเหตุ: สามารถเข้าถึงฟิลด์ได้ทันทีที่พร้อมใช้งาน
form['my_field'].value()
เข้าถึงค่าแบบฟอร์มในคำขอ POST บางวัน: |
คุณสามารถทำได้หลังจากตรวจสอบความถูกต้องของข้อมูลแล้ว
if myform.is_valid():
data = myform.cleaned_data
field = data['field']
นอกจากนี้โปรดอ่านเอกสาร django พวกเขามีความสมบูรณ์แบบ.
ในการดึงข้อมูลจากแบบฟอร์มที่ส่งคำขอโพสต์คุณสามารถทำได้เช่นนี้
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")
ฉันใช้ django 1.7+ และ python 2.7+ วิธีแก้ปัญหาข้างต้นไม่ได้ผล และค่าอินพุตในรูปแบบสามารถใช้ POST ด้านล่าง (ใช้แบบฟอร์มเดียวกันด้านบน):
if form.is_valid():
data = request.POST.get('my_form_field_name')
print data
หวังว่านี่จะช่วยได้
class ContactForm(forms.Form): my_form_field_name = forms.CharField()