前端介绍了建立模型(表),并写了保存数据,与查询数据,那么在前端页面,如何将用户输入的数据提交到后台保存呢?
django框架的处理逻辑大体是这样的:
1,前端页面表单一般是在一个form里面,在form中指定action
2,在urls.py中定义路由,接受form中action指定的路径(由)
3,在views.py或自定义的py模块中定义后端处理逻辑,并返回给前端
1,创建前端页面
通用情况下,前端页面都是html文件,在myweb\web\templates目录新建一个taskAdd.html文件,编辑代码如下:
{% extends 'base.html' %}
{% block content %}
{% include "v3/v3Com.html" %}
{% csrf_token %}
新增任务 任务名称: 操作人: 开始日期: 结束日期: 任务描述: {{ info }}
{% endif %}
{% endblock %}
在没有美化的情况,一个比较粗糙的页面是这样的:
2,编辑views.py文件
编辑myweb\web\views.py文件,加入代码:
import database
# 保存任务表
def task_add(request):
task_info = dict()
task_info['task_name'] = request.POST.get('task_name')
task_info['task_user'] = request.POST.get('task_user')
task_info['task_describe'] = request.POST.get('task_describe')
task_info['task_start_date'] = request.POST.get('task_start_date')
task_info['task_end_date'] = request.POST.get('task_end_date')
dataBase.save_task(task_info)
因为我们把保存数据的逻辑是写在 database.py里的save_task函数里的
所以先引入database,再调用save_task函数。(如果不清楚,看“保存数据”那章节的内容)
3,配置urls.py文件
编辑urls.py文件,加入:
url(r'^taskAdd/', views.task_add),
前端页面的form提交时会先在urls.py里找到form里action指定的路径taskAdd,urls根据taskAdd,去调用views.task_add函数。
另外注意在form里的{% csrf_token %},如果不加上这句,那么运行时会报一个错误。 这是一种安全机制,用于防止跨站攻击的。即后端服务要验证请求的来源是明确的。