创建Django项目(七)——表单
2014-01-12 12:23
302 查看
2013-08-15 19:43:01|
1.URL配置和视图
"blog\urls.py"文件中:添加url(r'write_article/$', 'write_article'),
“blog\views.py”文件中:
def write_article(request, article_id=0):
"""写日志"""
c = {}
try:
article = Article.objects.get(id=article_id)
except Article.DoesNotExist:
article = Article()
if request.method == 'POST': # 如果form被提交
form = ArticleForm(request.POST) # A form bound to the POST data
# form.populate()
if form.is_valid(): # All validation rules pass
article.title = form.cleaned_data['title']
article.body = form.cleaned_data['body']
article.group = form.cleaned_data['group']
article.save()
return render_to_response('blogs_display.html',) # Redirect after POST
else:
c['form'] = form
return render_to_response("write_article.html", c, context_instance=RequestContext(request))
else:
if article.id:
data = {}
data['title'] = article.title
data['body'] = article.body
data['group'] = article.group
form = ArticleForm(data)
else:
form = ArticleForm() # An unbound form
c['form'] = form
return render_to_response('write_article.html', c, context_instance=RequestContext(request))
2.建立表单
新建文件"blog\forms.py",用于存放与blog相关的表单。
# -*- coding:utf-8 -*-
from django import forms
from models import Article, Group
class ArticleForm(forms.Form):
"""日志表单"""
title = forms.CharField(max_length=30, required=True, label=u'标题',
error_messages={'max_length':'标题太长了,不如放在内容里面吧', 'required':'忘记写标题了'})
body = forms.CharField(max_length=1000, required=True, label=u'内容',
error_messages={'max_length':'内容太长了', 'required':'忘记写内容了'})
group_list = forms.ModelChoiceField(widget=forms.Select(), queryset=None,
empty_label=None, required=False, label=u'分类',
error_messages={'required':'文章没有分类'})
class Meta:
model = Article
def __init__(self, *args, **kwargs):
super(ArticleForm, self).__init__(*args, **kwargs)
self.fields['group_list'].queryset = Group.objects.all()
3.模板
"blog\templates\write_article.html"文件中:
{% extends "base.html" %}
{% block title %}write_article{% endblock %}
{% block content %}
<form action='' method='post'><table>
{% csrf_token %}
{{ form.as_table }}
<tr>
<td><input type="submit" value="创建用户" />
<input type="hidden" name="next" value="{{ next|escape }}" /></td>
</tr>
</table></form>
{% endblock %}
4.页面显示
http://localhost:8000/blog/write_article
1.URL配置和视图
"blog\urls.py"文件中:添加url(r'write_article/$', 'write_article'),
“blog\views.py”文件中:
def write_article(request, article_id=0):
"""写日志"""
c = {}
try:
article = Article.objects.get(id=article_id)
except Article.DoesNotExist:
article = Article()
if request.method == 'POST': # 如果form被提交
form = ArticleForm(request.POST) # A form bound to the POST data
# form.populate()
if form.is_valid(): # All validation rules pass
article.title = form.cleaned_data['title']
article.body = form.cleaned_data['body']
article.group = form.cleaned_data['group']
article.save()
return render_to_response('blogs_display.html',) # Redirect after POST
else:
c['form'] = form
return render_to_response("write_article.html", c, context_instance=RequestContext(request))
else:
if article.id:
data = {}
data['title'] = article.title
data['body'] = article.body
data['group'] = article.group
form = ArticleForm(data)
else:
form = ArticleForm() # An unbound form
c['form'] = form
return render_to_response('write_article.html', c, context_instance=RequestContext(request))
2.建立表单
新建文件"blog\forms.py",用于存放与blog相关的表单。
# -*- coding:utf-8 -*-
from django import forms
from models import Article, Group
class ArticleForm(forms.Form):
"""日志表单"""
title = forms.CharField(max_length=30, required=True, label=u'标题',
error_messages={'max_length':'标题太长了,不如放在内容里面吧', 'required':'忘记写标题了'})
body = forms.CharField(max_length=1000, required=True, label=u'内容',
error_messages={'max_length':'内容太长了', 'required':'忘记写内容了'})
group_list = forms.ModelChoiceField(widget=forms.Select(), queryset=None,
empty_label=None, required=False, label=u'分类',
error_messages={'required':'文章没有分类'})
class Meta:
model = Article
def __init__(self, *args, **kwargs):
super(ArticleForm, self).__init__(*args, **kwargs)
self.fields['group_list'].queryset = Group.objects.all()
3.模板
"blog\templates\write_article.html"文件中:
{% extends "base.html" %}
{% block title %}write_article{% endblock %}
{% block content %}
<form action='' method='post'><table>
{% csrf_token %}
{{ form.as_table }}
<tr>
<td><input type="submit" value="创建用户" />
<input type="hidden" name="next" value="{{ next|escape }}" /></td>
</tr>
</table></form>
{% endblock %}
4.页面显示
http://localhost:8000/blog/write_article
相关文章推荐
- Django 用ModelForm批量保存form表单(非常实用的方法) mfor_verity项目
- django创建第一个项目
- eclipse + pydev 创建django项目
- django项目培训站-29-模型类表单的保存数据-匹配规则自定义-
- django之创建第7-4个项目-配置views文件实现url传值
- python+django(创建项目)
- 使用django创建项目最终代码
- 1、创建一个django项目
- 1、创建一个django项目
- 创建你的第一个Django项目
- django框架创建Python项目CRUDp的步骤
- 【Django异常】django-admin.py startproject Project只能调出来django-admin.py而不创建项目
- 创建Django项目(五)——URL配置和视图
- 在Ubuntu中django创建项目
- 在Django项目中使用djcelery model api创建和更新定时任务--实际使用版本
- eclipse创建django项目报错误Django not found(新建完成后项目中没有manage、urls等文件)
- 复习Django项目二——创建app应用程序
- 创建Pydve项目报 Django not found
- Django-简单项目创建
- Django笔记——使用Anaconda创建虚拟环境并搭建Django项目