创建Django项目(七)——表单

本文介绍了一个基于Django框架的博客系统中文章编辑功能的具体实现过程,包括URL配置、视图函数、表单设计及模板展示等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.页面显示

转载于:https://www.cnblogs.com/zifenger/p/3515804.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值