web开发python第三课用户输入数据
一、Html表单
1、在web开发中,用户经常要提交数据
2、一个常见的方式是通过html表单来进行的
3、<form>元素定义HTML表单
4、<form>元素定义的形式:
<form>
.
form elements
.
</form>
5、子元素通常是用来让用户输入的数据的元素
<input>元素
是最重要的表单元素
类型
text 定义常规文本输入
radio 定义单选按钮的输入
submit 定义提交按钮(提交表单)
文本输入
<input type="text">定义用于文本输入的单行输入字段
先在static文件中定义一个静态的html
然后定义一个函数showadd,首先新加一个路由
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^student$', views.show_all_students), url(r'^showadd$',views.showadd), ]+ static("/s",document_root="./static"),
tmplt = u''' <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>考生信息</title> </head> <body> <form> <filedset> <legend>添加学生信息:</legend> 登录名 : <input type="text" name="loginname" value=""><br><br> 真实姓名 : <input type="text" name="name" value=""><br><br> 年龄 : <input type="number" name="age" value="18"><br><br> <input type="submit" value="提交"> </filedset> </form>> <br> <h2>现有学生</h2> <table border="1"> <th>学生登录名</th> <th>真是姓名</th> <th>年龄</th> <tr> <td>zhangsan</td> <td>张三</td> <td>95</td> </tr> </table> </body> </html> ''' def showadd(request): return HttpResponse(tmplt)
静态的写死的,下面动态的产生
def showadd(request): if 'loginname' in request.GET: loginname = request.GET['loginname'] name = request.GET['name'] age = int(request.GET['age']) studentTable[loginname] = { 'loginname': loginname, 'name': name, 'age': age, } onehtmlstu = u'<tr><td>{}</td><td>{}</td><td>{}</td></tr>' liststudents = [onehtmlstu.format(one['loginname'], one['name'], one['age']) for one in studentTable.values()] allhtmlstus = ''.join(liststudents) return HttpResponse(tmplt%allhtmlstus)
后端动态产生html
两种方式
1、自己代码拼接处html
2、使用模板引擎,引入变量渲染出来
from django.template import engines django_engine = engines['django'] template = django_engine.from_string(tmplt)
<table border="1"> <th>学生登录名</th> <th>真是姓名</th> <th>年龄</th> {% for one in studentlist %} <tr> <td>{{one.loginname}} </td> <td>{{one.name}}</td> <td>{{one.age}}</td> </tr> {% endfor %} </table> </body> </html> '''
ret = template.render({'studentList': studentTable.values()}) return HttpResponse(ret)
render渲染出来,拼接的内容非常复杂时可以用模板,缺点是渲染有性能问题,因为要调用render去渲染出来,首先要分析语法的模式,从开发效率来说,是简化了开发工作,但是在执行效率上不如手动写