您的位置:首页 > 编程语言 > Go语言

创建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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: