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去渲染出来,首先要分析语法的模式,从开发效率来说,是简化了开发工作,但是在执行效率上不如手动写

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值