1. Django Form 主要有两种处理方式:
  2. 1.直接继承 forms.Form
  3. 2.直接利用已有的model中的class,从ModelForm中继承.
  4. 这两种方式,都涉及到如下几个问题:
  5. 1.django form 显示中文字段名
  6. 2.django form field 的样式控制
  7. 3.django form 的数据校验
  8. 4.django form 数据提交后的处理.
  9. 第一种方式:
  10. class TestForm(forms.Form):
  11. #==label 用来控制 form 字段的 中文显示,widget 可以控制其他属性,比如样式等。
  12. yourname = forms.CharField(label='名称',max_length=50,widget=forms.TextInput(attrs={'style':'border:1px solid #ccc;'}))
  13. website = forms.URLField(required=False,widget=forms.TextInput(attrs={'class':'myclass'}))
  14. email = forms.EmailField(label='邮箱')
  15. content = forms.CharField(label='内容',widget=forms.Textarea(attrs={'cols':'80','rows':'5'}))
  16. def add_comment(request):
  17. context={}
  18. context.update(csrf(request))
  19. form = TestForm()
  20. context['form']=form
  21. return render_to_response('form.html',context)
  22. def save_comment(request):
  23. form = TestForm(request.POST)
  24. #===校验form 中的数据,并处理.
  25. if form.is_valid() :
  26. print 'successs'
  27. yourname = form.cleaned_data['yourname']
  28. website = form.cleaned_data['website']
  29. email = form.cleaned_data['email']
  30. content = form.cleaned_data['content']
  31. #===想干嘛就干嘛,可以插入数据库等
  32. print 'get information:',yourname,email,website,content
  33. return render_to_response('form.html',locals())
  34. else:
  35. print 'error'
  36. return render_to_response('form.html',locals())
  37. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "​​http://www.w3.org/TR/html4/strict.dtd​​">
  38. <html>
  39. <head>
  40. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  41. <title>Add contact</title>
  42. </head>
  43. <body>
  44. <div><h2> 直接forms.Form 方式 </h2></div>
  45. {% if form.errors %}
  46. <p style="color: red;">
  47. Please correct the error{{ form.errors|pluralize }} below.
  48. </p>
  49. {% endif %}
  50. <form method="POST" action="/save_contact/">
  51. {% csrf_token %}
  52. <table>
  53. {{form.as_table}}
  54. </table>
  55. <input type="submit" value="submit"/>
  56. </form>
  57. </body>
  58. </html>