时间:2021-07-01 10:21:17 帮助过:14人阅读
2 urls分发路由
- url(<span style="color: #008080; font-weight: bold">r‘^app01/‘, include(<span style="color: #008080; font-weight: bold">‘app01.urls‘)),</span></span>
- url(<span style="color: #008080; font-weight: bold">r‘^add_student$‘, views.add_student),</span>
3 前端
View Code
- <span style="color: #0000ff"><!</span><span style="color: #ff00ff">DOCTYPE html</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">html </span><span style="color: #ff0000">lang</span><span style="color: #0000ff">="en"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">head</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">meta </span><span style="color: #ff0000">charset</span><span style="color: #0000ff">="UTF-8"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">title</span><span style="color: #0000ff">></span>Title<span style="color: #0000ff"></</span><span style="color: #800000">title</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">link </span><span style="color: #ff0000">rel</span><span style="color: #0000ff">="stylesheet"</span><span style="color: #ff0000"> href</span><span style="color: #0000ff">="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">link </span><span style="color: #ff0000">rel</span><span style="color: #0000ff">="stylesheet"</span><span style="color: #ff0000"> href</span><span style="color: #0000ff">="/static/plugins/font-awesome-4.7.0/css/font-awesome.css"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">head</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">body</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">style</span><span style="color: #0000ff">="width:500px;margin:0 auto"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">h4 </span><span style="color: #ff0000">style</span><span style="color: #0000ff">="margin-left: 25px;"</span><span style="color: #0000ff">></span>添加学生<span style="color: #0000ff"></</span><span style="color: #800000">h4</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">form </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="form-horizontal"</span><span style="color: #ff0000"> action</span><span style="color: #0000ff">="/app01/add_student"</span><span style="color: #ff0000"> method</span><span style="color: #0000ff">="POST"</span><span style="color: #0000ff">></span><span style="color: #000000">
- {% csrf_token %}
- </span><span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="form-group"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">label </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-2 control-label"</span><span style="color: #0000ff">></span>姓名:<span style="color: #0000ff"></</span><span style="color: #800000">label</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-10"</span><span style="color: #0000ff">></span><span style="color: #000000">
- {{ obj.name }}{{ obj.errors.name.0 }}
- </span><span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="form-group"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">label </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-2 control-label"</span><span style="color: #0000ff">></span>年龄:<span style="color: #0000ff"></</span><span style="color: #800000">label</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-10"</span><span style="color: #0000ff">></span><span style="color: #000000">
- {{ obj.age }} {{ obj.errors.age.0 }}
- </span><span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="form-group"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">label </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-2 control-label"</span><span style="color: #0000ff">></span>邮箱:<span style="color: #0000ff"></</span><span style="color: #800000">label</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-10"</span><span style="color: #0000ff">></span><span style="color: #000000">
- {{ obj.email }} {{ obj.errors.email.0 }}
- </span><span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="form-group"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">label </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-2 control-label"</span><span style="color: #0000ff">></span>班级:<span style="color: #0000ff"></</span><span style="color: #800000">label</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-10"</span><span style="color: #0000ff">></span><span style="color: #000000">
- {{ obj.cls_id }} {{ obj.errors.cls_id.0 }}
- </span><span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="form-group"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">div </span><span style="color: #ff0000">class</span><span style="color: #0000ff">="col-sm-offset-2 col-sm-10"</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"><</span><span style="color: #800000">input </span><span style="color: #ff0000">type</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000"> class</span><span style="color: #0000ff">="btn btn-default"</span><span style="color: #ff0000"> value</span><span style="color: #0000ff">="提交"</span><span style="color: #0000ff">/></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">form</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">div</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">body</span><span style="color: #0000ff">></span>
- <span style="color: #0000ff"></</span><span style="color: #800000">html</span><span style="color: #0000ff">></span>
4 视图
View Code
- <span style="color: #0000ff">def</span><span style="color: #000000"> add_student(request):
- </span><span style="color: #0000ff">if</span> request.method == <span style="color: #800000">‘</span><span style="color: #800000">GET</span><span style="color: #800000">‘</span><span style="color: #000000">:
- obj </span>=<span style="color: #000000"> StudentForm()
- </span><span style="color: #0000ff">return</span> render(request, <span style="color: #800000">‘</span><span style="color: #800000">app01_add_student.html</span><span style="color: #800000">‘</span>, {<span style="color: #800000">‘</span><span style="color: #800000">obj</span><span style="color: #800000">‘</span><span style="color: #000000">: obj})
- </span><span style="color: #0000ff">else</span><span style="color: #000000">:
- obj </span>=<span style="color: #000000"> StudentForm(request.POST)
- </span><span style="color: #0000ff">if</span><span style="color: #000000"> obj.is_valid():
- models.Student.objects.create(</span>**<span style="color: #000000">obj.cleaned_data)
- </span><span style="color: #0000ff">return</span> redirect(<span style="color: #800000">‘</span><span style="color: #800000">/app01/students</span><span style="color: #800000">‘</span><span style="color: #000000">)
- </span><span style="color: #0000ff">else</span><span style="color: #000000">:
- </span><span style="color: #0000ff">return</span> render(request, <span style="color: #800000">‘</span><span style="color: #800000">app01_add_student.html</span><span style="color: #800000">‘</span>, {<span style="color: #800000">‘</span><span style="color: #800000">obj</span><span style="color: #800000">‘</span>: obj})
5 数据规则类设置
View Code
- <span style="color: #0000ff">class</span><span style="color: #000000"> StudentForm(Form):
- name </span>= fields.CharField(max_length=8, min_length=2<span style="color: #000000">,
- widget</span>=widgets.TextInput(attrs={<span style="color: #800000">‘</span><span style="color: #800000">class</span><span style="color: #800000">‘</span>: <span style="color: #800000">‘</span><span style="color: #800000">form-control</span><span style="color: #800000">‘</span><span style="color: #000000">})
- )
- age </span>= fields.IntegerField(max_value=25, min_value=18<span style="color: #000000">,
- widget</span>=widgets.TextInput(attrs={<span style="color: #800000">‘</span><span style="color: #800000">class</span><span style="color: #800000">‘</span>: <span style="color: #800000">‘</span><span style="color: #800000">form-control</span><span style="color: #800000">‘</span><span style="color: #000000">})
- )
- email </span>= fields.EmailField(widget=widgets.TextInput(attrs={<span style="color: #800000">‘</span><span style="color: #800000">class</span><span style="color: #800000">‘</span>: <span style="color: #800000">‘</span><span style="color: #800000">form-control</span><span style="color: #800000">‘</span><span style="color: #000000">})
- )
- cls_id </span>=<span style="color: #000000"> fields.IntegerField(
- </span><span style="color: #008000">#</span><span style="color: #008000"> widget=widgets.Select(choices=[(1, ‘上海‘), (2,‘北京‘)])</span>
- <span style="color: #008000">#</span><span style="color: #008000"> choices 类型为[(),()]</span>
- widget=widgets.Select(choices=models.Classes.objects.values_list(<span style="color: #800000">‘</span><span style="color: #800000">id</span><span style="color: #800000">‘</span>, <span style="color: #800000">‘</span><span style="color: #800000">title</span><span style="color: #800000">‘</span><span style="color: #000000">),
- attrs</span>={<span style="color: #800000">‘</span><span style="color: #800000">class</span><span style="color: #800000">‘</span>: <span style="color: #800000">‘</span><span style="color: #800000">form-control</span><span style="color: #800000">‘</span><span style="color: #000000">})
- )</span>
6 补充:如何通过form表单实现: 给前端标签添加class等属性,以及设置Input输入框的type属性
View Code
- <span style="color: #008000">#</span><span style="color: #008000"> Form生成html标签</span>
- <span style="color: #000000"> a. 通过Form生成Input输入框,Form标签,以及submit标签还是要在前端写的,
- 但是Form标签内的Input标签可以在后台实现;只需要按以下步骤
- </span>-<span style="color: #000000"> views定义StudentForm(Form)类
- </span>-<span style="color: #000000"> views视图函数将Form实例化对象传递给前端
- </span>-<span style="color: #000000"> 前端{{ obj.段 }}即可
- b. 通过Form设置前端Input的type属性,即设置不同类型的输入框
- </span><span style="color: #008000">#</span><span style="color: #008000"> 设置name为text, cls_id为下拉框</span>
- <span style="color: #0000ff">class</span><span style="color: #000000"> StudentForm(Form):
- name </span>= fields.CharField(widget=<span style="color: #000000"> widgets.InputText())
- cls_id </span>= fields.IntegerField(widget =<span style="color: #000000"> widgets.Select())
- c. 设置下拉框的内容choices属性
- </span><span style="color: #0000ff">class</span><span style="color: #000000"> StudentForm(Form):
- cls_id </span>=<span style="color: #000000"> fields.IntegerField(
- widget</span>=widgets.Select(choices=models.Classes.objects.values_list(<span style="color: #800000">‘</span><span style="color: #800000">id</span><span style="color: #800000">‘</span>, <span style="color: #800000">‘</span><span style="color: #800000">title</span><span style="color: #800000">‘</span><span style="color: #000000">))
- )
- 注意: choices的值必须[元组,(), ()]类型
- widget</span>=widgets.Select(choices=[(1, <span style="color: #800000">‘</span><span style="color: #800000">上海</span><span style="color: #800000">‘</span>), (2,<span style="color: #800000">‘</span><span style="color: #800000">北京</span><span style="color: #800000">‘</span><span style="color: #000000">)])
- d.设置input输入框的class属性 </span>--<span style="color: #000000"> attrs
- name </span>= fields.CharField(max_length=8, min_length=2<span style="color: #000000">,
- widget</span>=widgets.TextInput(attrs={<span style="color: #800000">‘</span><span style="color: #800000">class</span><span style="color: #800000">‘</span>: <span style="color: #800000">‘</span><span style="color: #800000">form-control</span><span style="color: #800000">‘</span><span style="color: #000000">})
- )
- cls_id </span>=<span style="color: #000000"> fields.IntegerField(
- widget</span>=<span style="color: #000000">widgets.Select(
- choices</span>=models.Classes.objects.values_list(<span style="color: #800000">‘</span><span style="color: #800000">id</span><span style="color: #800000">‘</span>, <span style="color: #800000">‘</span><span style="color: #800000">title</span><span style="color: #800000">‘</span><span style="color: #000000">),
- attrs</span>={<span style="color: #800000">‘</span><span style="color: #800000">class</span><span style="color: #800000">‘</span>: <span style="color: #800000">‘</span><span style="color: #800000">form-control</span><span style="color: #800000">‘</span><span style="color: #000000">}
- )
- )
- 注意: attrs参数必须放在TextInput或者Select等内部,而且值必须为字典
- e. 通过Form设置前端Input的默认显示值
- 只要在视图函数将实例化一个Form对象,并且设置initial值即可
- student_dict </span>= models.Student.objects.filter(id=nid).values(<span style="color: #800000">‘</span><span style="color: #800000">name</span><span style="color: #800000">‘</span>, <span style="color: #800000">‘</span><span style="color: #800000">age</span><span style="color: #800000">‘</span>, <span style="color: #800000">‘</span><span style="color: #800000">email</span><span style="color: #800000">‘</span>, <span style="color: #800000">‘</span><span style="color: #800000">cls_id</span><span style="color: #800000">‘</span><span style="color: #000000">).first()
- obj </span>= StudentForm(initial=student_dict)
[oldboy-django][2深入django]学生管理(Form)-- 添加(美化Form表单:通过form给前端标签添加属性)
标签:play boot csrf rect filter 添加 mode head email