Django请求与表单提交
Django请求
页面默认的请求方式都是get请求,request是传递到视图的请求,里面包含请求的各种参数:
常用的请求方式:delete,updata,put,get,post。
Get:默认是get请求,请求数据以明文形式放在路由上,get的格式是以?开头,键等于值的形式,以&来分割键值对,通常用于和服务器获取资源。
Post:请求数据隐藏发送,安全系数更高。通常用于向服务器提交资源。
Django默认提供了处理get和post请求的参数,其他类型的请求需要使用django的视图类来自定义。可以通过dir来查看request的方法
request.COOKIES: | 接收cookie的方法 |
---|---|
request.GET: | 获取get请求数据的方法 |
request.POST: | 获取post请求数据的方法 |
request.FILES: | 获取文件上传请求数据的方法 |
request.method: | 获取请求的方法 |
request.path: | 请求的路径 |
request.get_raw_uri: | 请求的url |
request.META | 请求的详细参数 |
request.META.OS | 请求端系统 |
request.META.HTTP_USER_AGENT | 用户请求头,返回请求浏览器版本 |
request.META.HTTP_HOST | 请求的主机 |
request.META.HTTP_REFERER | 请求的来源 |
表单数据提交
on 提交的地址,默认是当前路由。
Method 提交的方法,默认是get
Input 是表单的元素
Name参数用来做传参的值
Submit会自动提交当前表单的数据
模型类models
from django.db import models
# Create your models here.
class FromExample(models.Model):
name = models.TextField(max_length=32)
password = models.TextField(max_length=32)
视图
from django.shortcuts import render,render_to_response
from Formapp.models import *
# Create your views here.
def formexample(request):
# 获得表单填写的数据
data = request.GET
name = data.get('username','未知')
password = data.get('password','未知')
# 将页面上填写的数据提交到数据库,保存数据
user = FromExample()
user.name = name
user.password = password
user.save()
# 返回添加后的所有数据
users = FromExample.objects.all()
return render_to_response("formexample.html",locals())
# 删除
def delete_user(request):
# 获取id
id = int(request.GET.get("id"))
# 删除id
user = FromExample.objects.get(id=id)
user.delete()
# 返回删除后的数据
users = FromExample.objects.all()
return render_to_response('formexample.html',locals())
页面HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/fe/" method="">
<p>
<label >用户名:</label>
<input type="text" name="username">
</p>
<p>
<label>密 码:</label>
<input type="password" name="password">
</p>
<p>
<input type="submit" value="提交">
</p>
{% for u in users %}
<p>
{{ u.name }} : {{ u.password }}
<a href="/du/?id={{ u.id }}">删除</a>
</p>
{% endfor %}
</form>
</body>
</html>