Django模块笔记【三】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/topics/

*该笔记将对各个模块进行单独介绍

*Forms

1. 使用表单(Working with forms)

只要网站涉及到访问者的输入操作,那么就必须用到表单。在HTML中,表单是<form>...</form>中的语句集合。

GET和POST是HTTP处理表单仅有的两种方式。Django中使用Form类表示表单。

对使用方法进行简单举例:

1 # forms.py
2
3 from django import forms
4
5 class NameForm(forms.Form):
6     your_name = forms.CharField(label=‘Your name‘, max_length=100)
 1 # view.py
 2
 3 from django.shortcuts import render
 4 from django.http import HttpResponseRedirect
 5
 6 from .forms import NameForm
 7
 8 def get_name(request):
 9     # if this is a POST request we need to process the form data
10     if request.method == ‘POST‘:
11         # create a form instance and populate it with data from the request:
12         form = NameForm(request.POST)
13         # check whether it‘s valid:
14         if form.is_valid():
15             # process the data in form.cleaned_data as required
16             # ...
17             # redirect to a new URL:
18             return HttpResponseRedirect(‘/thanks/‘)
19
20     # if a GET (or any other method) we‘ll create a blank form
21     else:
22         form = NameForm()
23
24     return render(request, ‘name.html‘, {‘form‘: form})
1 # name.html
2
3 <form action="/your-name/" method="post">
4     {% csrf_token %}
5     {{ form }}
6     <input type="submit" value="Submit" />
7 </form>

2. 表单集合(Formsets)

Formsets可以一次性创建多个表格。使用举例如下:

 1 >>> import datetime
 2 >>> from django.forms.formsets import formset_factory
 3 >>> from myapp.forms import ArticleForm
 4 >>> ArticleFormSet = formset_factory(ArticleForm, extra=2)
 5 >>> formset = ArticleFormSet(initial=[
 6 ...     {‘title‘: ‘Django is now open source‘,
 7 ...      ‘pub_date‘: datetime.date.today(),}
 8 ... ])
 9
10 >>> for form in formset:
11 ...     print(form.as_table())
12 <tr><th><label for="id_form-0-title">Title:</label></th><td><input type="text" name="form-0-title" value="Django is now open source" id="id_form-0-title" /></td></tr>
13 <tr><th><label for="id_form-0-pub_date">Pub date:</label></th><td><input type="text" name="form-0-pub_date" value="2008-05-12" id="id_form-0-pub_date" /></td></tr>
14 <tr><th><label for="id_form-1-title">Title:</label></th><td><input type="text" name="form-1-title" id="id_form-1-title" /></td></tr>
15 <tr><th><label for="id_form-1-pub_date">Pub date:</label></th><td><input type="text" name="form-1-pub_date" id="id_form-1-pub_date" /></td></tr>
16 <tr><th><label for="id_form-2-title">Title:</label></th><td><input type="text" name="form-2-title" id="id_form-2-title" /></td></tr>
17 <tr><th><label for="id_form-2-pub_date">Pub date:</label></th><td><input type="text" name="form-2-pub_date" id="id_form-2-pub_date" /></td></tr>

在formset_factory中还可以添加max_num,validate_max,can_order,can_delete属性,Formset还具有is_valid()方法。


3. 从模型创建表单

举例如下:

 1 >>> from django.forms import ModelForm
 2 >>> from myapp.models import Article
 3
 4 # Create the form class.
 5 >>> class ArticleForm(ModelForm):
 6 ...     class Meta:
 7 ...         model = Article
 8 ...         fields = [‘pub_date‘, ‘headline‘, ‘content‘, ‘reporter‘]
 9
10 # Creating a form to add an article.
11 >>> form = ArticleForm()
12
13 # Creating a form to change an existing article.
14 >>> article = Article.objects.get(pk=1)
15 >>> form = ArticleForm(instance=article)


4. 表单资产(Form Assets)

核心内容:css,js,media, widget,略过。

-- The End --

时间: 2024-08-01 02:12:54

Django模块笔记【三】的相关文章

Django模块笔记【一】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/topics/ *该笔记将对各个模块进行单独介绍 *Model&Database 1. 模型(models) 模型是数据的唯一信息源,它指示了数据的域(fields)和行为(behaviors).每个模型都对应一个数据库表. ①每个模型都是django.db.models.Model的子类:②模型的每个属性代表了数据库的域:③数据库入口API,参考making queries部分. 比如, 1 fro

Django模块笔记【六】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/topics/ *该笔记将对各个模块进行单独介绍 *migration&Managing files&Testing in Django 1. migration的命令 migrate命令负责应用migrations,同时也负责撤销migrations以及查看他们的状态. makemigrations基于对模型的改变,创建新的migrations. sqlmigrate为migration显示S

Django模块笔记【二】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/topics/ *该笔记将对各个模块进行单独介绍 * HTTP Request Handlers 1. URL dispatcher URL在名为URLconf的Python模块中创建,该模块提供了URL模式(正则表达式)和Python函数(视图)之间的映射. URLconf举例如下: 1 from django.conf.urls import url 2 3 from . import views

Django模块笔记【五】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/topics/ *该笔记将对各个模块进行单独介绍 *Class-based views 视图是接受请求并返回响应的可调用对象. 1. 用法举例 1 from django.conf.urls import url 2 from django.views.generic import TemplateView 3 4 urlpatterns = [ 5 url(r'^about/', TemplateV

Django模块笔记【四】

入门笔记翻译整理自:https://docs.djangoproject.com/en/1.8/topics/ *该笔记将对各个模块进行单独介绍 *template 1. 配置(Configuration) 1 TEMPLATES = [ 2 { 3 'BACKEND': 'django.template.backends.django.DjangoTemplates', 4 'DIRS': [], 5 'APP_DIRS': True, 6 'OPTIONS': { 7 # ... some

Django学习笔记(三)—— 模型 model

疯狂的暑假学习之 Django学习笔记(三)-- 模型 model 参考:<The Django Book> 第5章 1.setting.py 配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.', # 用什么数据库管理系统 'NAME': '', # 数据库名称,如果用sqlite,要写完整路径 'USER': '', # 如果用sqlite,这个不用写 'PASSWORD': '', # 如果用sqlite,这个不用写

Django学习笔记(现学现写,实时更新)

说明:我是先上手做一些简单的例子,然后在尝试的过程中理解Django的原理,笔记也是按这个思路来的. 一.Django结构与基本文件介绍 1. django-admin.py 工程管理工具,主要用于创建项目和app等. 例:django-admin.py startproject project_example 会创建一个名为project_example的工程,目录结构如下: |-- project_example|    |--project_example|        |-- __in

Python框架之Django学习笔记(十七)

Django框架之表单(续二) PS:本博客欢迎转发,但请注明博客地址及作者~ 博客地址:http://www.cnblogs.com/voidy/ <.)#)))≦ 今天的这篇博客将是Django学习笔记博客的最后一篇,基本每周最少一篇的Django框架学习,坚持到今天也实属不易,当然了,这个框架的学习仅仅是Django框架的基础部分了,不过也够我们平时搭个简易的网站或者个人博客什么的.希望通过这一系列的博文,让大家也从中体会到Django框架的魅力所在,如果很不幸,你没有体会到,只能说明我水

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5