欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

django学习08---Form表单提交

程序员文章站 2022-07-14 23:09:37
...

一、表单的基本介绍

html中表单基本格式:

<form action="" method="">
    用户名:<input type="text" name="username" value="用户名" >
    密码:<input type="password" name="password" value="密码" >
    <input type="submit" value="提交">
</form>

django学习08---Form表单提交

什么是表单:

  表单是HTML中用于提交数据给服务器的一个标签,所有的表单元素(input/textarea/button…)都要放在form标签当中.然后有以下参数:
1. formmethod参数用于设置表单的提交方式,默认使用POST
2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL。

GET和POST:

  1. GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。
  2. POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。
  3. POST方法的参数不能在URL当中看到,他是通过body参数传递给服务器的,所以相对GET方法直接能在URL当中看到传递的参数,显得更加安全一些.当然,也不能简单的判定POST方法比GET方法更安全,要使网站保持安全,需要做更多的安全处理。

二、django中form表单提交实例

目录结构:
django学习08---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>

django学习08---Form表单提交
(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
django学习08---Form表单提交
django学习08---Form表单提交
再次运行即ok