博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django表单
阅读量:6446 次
发布时间:2019-06-23

本文共 1978 字,大约阅读时间需要 6 分钟。

有时候我们需要在前台用 get 或 post 方法提交一些数据,所以自己写一个网页,用到 html 表单的知识。

比如写一个计算 a和 b 之和的简单应用,网页上这么写

第一节:

比如写一个计算 a和 b 之和的简单应用,网页上这么写

<!DOCTYPE html>

<html>
<body>
<p>请输入两个数字</p>
<form action="/add/" method="get">
  a: <input type="text" name="a"> <br>
  b: <input type="text" name="b"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>

把这些代码保存成一个index.html,放在 templates 文件夹中。

网页的值传到服务器是通过 <input> 或 <textarea>标签中的 name 属性来传递的,在服务器端这么接收:

from django.http import HttpResponse

from django.shortcuts import render
def index(request):
  return render(request, 'index.html')
def add(request):
  a = request.GET.get('a',0)
  b = request.GET.get('b',0)
  a = int(a)
  b = int(b)
  return HttpResponse(str(a+b))

request.GET 可以看成一个字典,用GET方法传递的值都会保存到其中,可以用 request.GET.get('key', None)来取值,没有时不报错。

第二节,使用 Django 的 表单 (forms)

新建一个 zqxt_form2 项目

django-admin.py startproject zqxt_form2
# 进入到 zqxt_form2 文件夹,新建一个 tools APP
python manage.py startapp tools

在tools文件夹中新建一个 forms.py 文件

from django import forms

class AddForm(forms.Form):
  a = forms.IntegerField()
  b = forms.IntegerField()

我们的视图函数 views.py 中

# coding:utf-8

from django.shortcuts import render
from django.http import HttpResponse
# 引入我们创建的表单类
from .forms import AddForm
def index(request):
  if request.method == 'POST':# 当提交表单时
    form = AddForm(request.POST) # form 包含提交的数据
    if form.is_valid():# 如果提交的数据合法
      a = form.cleaned_data['a']
      b = form.cleaned_data['b']
      return HttpResponse(str(int(a) + int(b)))
  else:# 当正常访问时
    form = AddForm()
  return render(request, 'index.html', {'form': form})

对应的模板文件 index.html

<form method='post'>

{% csrf_token %}
{
{ form }}
<input type="submit" value="提交">
</form>

再在 urls.py 中对应写上这个函数

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# 注意下面这一行
url(r'^$', 'tools.views.index', name='home'),
url(r'^admin/', include(admin.site.urls)),
)

转载于:https://www.cnblogs.com/chaoe/p/5991967.html

你可能感兴趣的文章
生成包含数字和大小写字母的随机码
查看>>
SPOJ104 Highways,跨越数
查看>>
使用rman备份异机恢复数据库
查看>>
Win7-64bit系统下安装mysql的ODBC驱动
查看>>
自己做一款简易的chrome扩展--清除页面广告
查看>>
node中非常重要的process对象,Child Process模块
查看>>
Webserver管理系列:3、Windows Update
查看>>
Linux内核源码详解——命令篇之iostat[zz]
查看>>
Sqlserver2000联系Oracle11G数据库进行实时数据的同步
查看>>
明年计划
查看>>
ORACLE功能GREATEST功能说明具体实例
查看>>
DataGridView 输入数据验证格式(实例)
查看>>
HDOJ 2151
查看>>
Foundation框架 - 快速创建跨平台的网站页面原型
查看>>
Intel 82599网卡异常挂死原因
查看>>
open-falcon
查看>>
三菱plc输出指示灯不亮怎么办(转载)
查看>>
doc2vec使用说明(一)gensim工具包TaggedLineDocument
查看>>
App测试中ios和Android的区别
查看>>
java.lang.NullPointerException&com.cb.action.LoginAction.execute(LoginAction.java:48)
查看>>