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. LN : leetcode 413 Arithmetic Slices

    lc 413 Arithmetic Slices 413 Arithmetic Slices A sequence of number is called arithmetic if it consi ...

  2. Python基础教程 读书笔记(2)第二章 列表和元组

    2.1序列概览 列表和元组的主要区别在于,列表可以修改,元组则不能.也就是说如果要根据要求来添加元素,那么列表可能会更好用;而出于某些原因,序列不能修改的时候,使用元组则更为合适.使用后者的理由通常是 ...

  3. iOS中的蓝牙

    iOS中的蓝牙 概述 iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),从iOS7开 ...

  4. 合并百度影音的离线数据 with python 2.1 bdv格式的更新

    最近百度影音的离线下载文件,格式有新变化. 经过分析,是bdv格式又有新格式,从最初的bdv0001,到bdv.config 的file....,这次更新的格式是直接包含一个片段,其中还有使用guid ...

  5. 核武器代理CC工具V3.42最新版本!

    软件说明 !!!有新版本更新,请移步到更新地址:https://www.cnblogs.com/cnhacker/p/10878688.html ########################### ...

  6. cookie存储位置

    平时各位在做项目时多半时候都会用到客户端的cookie,可大家知道cookie是存储在哪里吗? 首先cookie失效分为2种: 1:设置过期时间失效(只要设置了过期时间cookie就会存储在硬盘里面) ...

  7. C++ 线程同步的四种方式

    程之间通信的两个基本问题是互斥和同步. (1)线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒. (2)线程互 ...

  8. vue工程化与路由router

    一.介绍     vue.js 是 目前 最火的前端框架,vue.js 兼具 angular.js 和 react.js 的优点,并剔除它们的缺点.并且提供了很多的周边配套工具 如vue-router ...

  9. Spring Cloud练习1

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  10. EasyUI入门,DataGrid(数据表格)

    搭建EasyUI 1.进入官网,下载EasyUI的程序包.地址:http://www.jeasyui.com/download/list.php 2.先导入css样式,引入程序包 3.进入EasyUI ...