form表单的理解
来源:互联网 发布:四川广电网络广元 编辑:程序博客网 时间:2024/06/01 08:11
1、首先项目中 的目录结构为:
2、其中项目的urls.py内容为:
from django.conf.urls import include, urlfrom tools import viewsfrom django.contrib import adminadmin.autodiscover()urlpatterns = [ # Examples: url(r'^$', views.index, name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)),]
3、APP tools中的view.py为:(测试用的)
# coding:utf-8from django.shortcuts import renderfrom django.http import HttpResponse# 引入我们创建的表单类from .forms import AddFormdef index(request): # 当提交表单时 if request.method == 'POST': # form 包含提交的数据 form = AddForm(request.POST) return HttpResponse(form)#自己添加的用于测试上一句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 HttpResponse(form)#用于测试form内容,所以把下面一句给屏蔽了。#当路由的时候,第一次form中没有参数,只是自己Field表现的空文本框,比如(IntegerField) #return render(request, 'index.html', {'form': form})
完整版为:
# coding:utf-8from django.shortcuts import renderfrom django.http import HttpResponse# 引入我们创建的表单类from .forms import AddFormdef index(request): # 当提交表单时 if request.method == 'POST': # form 包含提交的数据 form = AddForm(request.POST) #如果提交的数据合法 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})
4、其中tools中的forms.py文件为:
from django import forms#自己就有文本框了。class AddForm(forms.Form): a = forms.IntegerField() b = forms.IntegerField()5、tools中的templates中的index.html的内容为:
<form method='post'>{% csrf_token %}{{ form }}<input type="submit" value="提交"></form>
6、项目中的setting文件内容为;
"""Django settings for zqxt_forms2 project.For more information on this file, seehttps://docs.djangoproject.com/en/1.6/topics/settings/For the full list of settings and their values, seehttps://docs.djangoproject.com/en/1.6/ref/settings/"""# Build paths inside the project like this: os.path.join(BASE_DIR, ...)import osBASE_DIR = os.path.dirname(os.path.dirname(__file__))# Quick-start development settings - unsuitable for production# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!SECRET_KEY = 's8_)6s1vp2lcf)iu7qq0fu138c!-$iy&0)td0faol@b1fl2&-g'# SECURITY WARNING: don't run with debug turned on in production!DEBUG = TrueTEMPLATE_DEBUG = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'tools',)MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',)ROOT_URLCONF = 'zqxt_forms2.urls'TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR+'/tools/templates',], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]WSGI_APPLICATION = 'zqxt_forms2.wsgi.application'# Database# https://docs.djangoproject.com/en/1.6/ref/settings/#databasesDATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }}# Internationalization# https://docs.djangoproject.com/en/1.6/topics/i18n/LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.6/howto/static-files/STATIC_URL = '/static/'
测试结果为:
首先,第一次加载URL时,调用views.index方法,因为没有参数的输入,所以,先走的else分支。即form其实就是两个IntegerField框
放开views.index中的else部分的return,进一步测试得:
输入参数后,
点击提交后,
if request.method == 'POST':
# form 包含提交的数据
form = AddForm(request.POST)
return HttpResponse(form)#自己添加的用于测试上一句form中的内容是什么?
代码全部放开,完整版的view:
测试结果为:
新手可能觉得这样变得更麻烦了,有些情况是这样的,但是 Django 的 forms 提供了:
模板中表单的渲染
数据的验证工作,某一些输入不合法也不会丢失已经输入的数据。
还可以定制更复杂的验证工作,如果提供了10个输入框,必须必须要输入其中两个以上,在 forms.py 中都很容易实现
也有一些将 Django forms 渲染成 Bootstrap 的插件,也很好用,很方便。
扩展:如果提交后在同一个页面显示结果呢?请看 Django Ajax
学习链接:http://code.ziqiangxuetang.com/django/django-forms.html阅读全文
0 0
- form表单的理解
- form表单的提交!!!
- form表单的提交
- Form表单的应用
- form表单的reset
- form表单的action
- form表单的reset
- form表单的target
- form表单的target
- Form表单的验证
- form表单的对象
- html的表单form
- form表单的制作
- 表单form的实现
- form表单的讲解
- Django的form表单
- 简单的form表单
- form表单的属性
- leftmost digit
- Python 编码解码的问题(学习笔记+总结思考)
- 如何将一个 镜像 pull到docker服务器上,并且实现该image 处于 up状态?
- 贪心 + 数学 (POJ 1862)
- __stdcall,__cdecl,__fastcall的区别
- form表单的理解
- 项目3-求最大公约数
- JMeter官方文档翻译----如何开始JMeter-1
- 多线程的状态
- 递归
- 日常训练 20170708 假如爱有天意love
- Hadoop配置遇到的问题
- 完全卸载MySql
- Linux进程与线程及其他知识点拾遗