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

创建Django项目(七)——表单的更多相关文章

  1. 第二十二章 Django会话与表单验证

    第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} ...

  2. 创建Django项目的过程

    1.创建Django项目根目录 a.命令式创建法:Django-admin startproject 项目名称 b.pycharm创建法:如下图 2.配置setting环境 a.配置静态文件 STAT ...

  3. 终端指令操作创建Django项目

    需求:通过Django创建一个用户表和权限表. 用户表包括:用户名,邮箱,密码,管理权限. 权限表包括:普通用户,管理用户,超级用户. 权限表和用户表有一对多的关系,即用户表中的每条数据对应权限表中的 ...

  4. 【django之form表单】

    一.构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method=&qu ...

  5. Django的form表单

    html的form表单 django中,前端如果要提交一些数据到views里面去,需要用到 html里面的form表单. 例如: # form2/urls.py from django.contrib ...

  6. Pycharm创建Django项目并访问Django

    Pycharm创建Django项目并访问Django 一.Django插件 如果没有Django插件,需要先安装Django插件. 1,首先点击Default Settings,打开设置页面: 2,打 ...

  7. Django 11 form表单(状态保持session、form表单及注册实现)

    Django 11 form表单(状态保持session.form表单及注册实现) 一.状态保持 session 状态保持 #1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状 ...

  8. 转载:Django之form表单

    转载: 一.使用form类创建一个表单 先定义好一个RegForm类: forms.py from django import forms # 导入forms类 class NameForm(form ...

  9. 创建Django项目(三)——站点管理

    2013-08-05 21:01:34|         1.激活管理界面         (1) 修改"mysite\mysite\settings.py"文件,将'django ...

  10. Django-下载安装-配置-创建django项目-三板斧简单使用

    目录 Django 简介 使用 django 的注意事项 计算机名不能有中文 Django版本问题 django下载安装 在命令行下载安装 在pycharm图形界面下载安装 检验是否安装成功 创建Dj ...

随机推荐

  1. 11.2Java-多态

    一.父类 public class Fu { public void show(){ System.out.println("父类"); } } 二.子类 public class ...

  2. SSM Note

    1.获取项目的绝对路径:${pageContext.request.contextPath } 2.销毁session:session.invalidate(); 3.控制器接收前端参数时,参数名要与 ...

  3. Thinkphp3.23 连接MSSQL方法

    Thinkphp 3.23要连接MSSQL,必须配置下,以下是主要的步骤. 1.要安装Microsoft Drivers for PHP for SQL Server驱动 下载驱动以前,要查看一下ph ...

  4. 手动将Excel数据导入SQL

    1. 右键点击数据库名称,Tasks --> Import Data... 2. Choose Data Source:MicroSoft Excel,选择Excel文件和Excel版本.Exc ...

  5. Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件

    导航 目   录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明 下一篇:Farseer.net轻量级ORM开源框架 ...

  6. 计算机网络、OSI模型、TCP/IP族

    一.计算机网络分类 1.按通信距离分类: 局域网:LAN,10m-1000m,房间.校园: 城域网:MAN,10km,城市: 广域网:WAN,100km以上,国家.全球. 二.OSI(Open Sys ...

  7. Android(java)学习笔记187:多媒体之SurfaceView

    1. SurfaceView:     完成单位时间内界面的快速切换(游戏界面流畅感). 我们之前知道一般的View,只能在主线程里面显示,主线程中更新UI.但是SurfaceView可以在子线程中里 ...

  8. Custom Operators

    New operators are declared at a global level using the operator keyword, and are marked with the pre ...

  9. MIPS的寄存器、指令和寻址方式的分类

    MIPS的32个寄存器 助记符 编号 作用 zero 0 恒为0 at 1 (assembly temporary)保留给汇编器使用 v0,v1 2-3 (values)子程序返回,即函数调用时的返回 ...

  10. lua 之 三木运算符

    在c语言中我三目运算符这么写: a?b:c 例如: max = a>b?a:b; 在lua中我们这么写 max = a>b and a or b 运行如下: