一、表单的基本介绍
html中表单基本格式:
<form action="" method="">
用户名:<input type="text" name="username" value="用户名" >
密码:<input type="password" name="password" value="密码" >
<input type="submit" value="提交">
</form>
什么是表单:
表单是HTML中用于提交数据给服务器的一个标签,所有的表单元素(input/textarea/button…)都要放在form标签当中.然后有以下参数:
1. form
的method
参数用于设置表单的提交方式,默认使用POST
。
2. action
用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL。
GET和POST:
- GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。
- POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。
- POST方法的参数不能在URL当中看到,他是通过body参数传递给服务器的,所以相对GET方法直接能在URL当中看到传递的参数,显得更加安全一些.当然,也不能简单的判定POST方法比GET方法更安全,要使网站保持安全,需要做更多的安全处理。
二、django中form表单提交实例
目录结构:
首先在settings.py中添加app books
python版本2.7如果使用的3.5版本部分地方可能需要修改
(1)urls.py
from django.conf.urls import url
from django.contrib import admin
from books import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', views.index, name="index_page"),
url(r'^login/$', views.login, name="login_page"), #登录页面
url(r'^register/$', views.register, name="register_page"), #注册页面
]
(2)models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models
# Create your models here.
class UserModel(models.Model): #创建userModel表 用户表
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
def __unicode__(self):
return self.username
书写完后在Terminal命令行中进行初始化
python manage.py makemigrations
python manage.py migrate
(3)login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form method="post">
{% csrf_token %} <!-- 防止跨域攻击 -->
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="提交">
</form>
</body>
</html>
(4)views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render,reverse
from .forms import LoginForm
from django.http import HttpResponse,HttpResponseRedirect
from models import UserModel
from django.db import models
def login(request):
if request.method == "GET": #如果提交方式为GET即显示login.html
return render(request, "login.html")
else: #如果提交方式为POST
username = request.POST.get("username", None)
password = request.POST.get("password", None)
userModel = UserModel.objects.filter(username=username, password=password).first() #数据库验证账号
if userModel: #如果存在则返回欢迎浏览书店,否则返回用户名或密码错误
return HttpResponse("欢迎浏览书店!")
else:
return HttpResponse("用户名或密码错误")
运行manage.py
再次运行即ok