zoukankan      html  css  js  c++  java
  • Django表单

    有时候我们需要在前台用 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)),
    )

  • 相关阅读:
    图片采集
    资源(先备着)
    Memories of Vladimir Arnold 摘录
    Tribute to Vladimir Arnold 摘录
    Textbooks, Testing, Training: How We Discourage Thinking 笔记
    每天都有杰出数学家去世?(挖坑)
    I'm angry——人教B版选修2-3上的一个错误
    How to Study as a Mathematics Major 的笔记
    读《桑榆忆往》做的一点笔记
    《近代欧氏几何学》笔记
  • 原文地址:https://www.cnblogs.com/chaoe/p/5991967.html
Copyright © 2011-2022 走看看