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. Java-超市购物小票案例-详细介绍

    1.1  超市购物购物小票需求分析 用户循环进行三个操作: 1.输入购买数量,代表为所购买货物的数量赋值,从而计算每项商品金额 2.打印小票,将已有数据打印 3.退出系统(因为该程序为循环操作,无法终 ...

  2. es6核心特性-数组扩展

    1. Array.from() : 将伪数组对象或可遍历对象转换为真数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,称为伪数组.典型的伪数组有函数的argu ...

  3. Bing图片下载器(Python实现)

    分享一个Python实现的Bing图片下载器.下载首页图片并保存到到当前目录.其中用到了正则库re以及Request库. 大致流程如下: 1.Request抓取首页数据 2.re正则匹配首页图片URL ...

  4. windows下管理ubuntu服务器以及切换root身份

    远程连接Linux云服务器-命令行模式 1.远程连接工具.目前Linux远程连接工具有很多种,您可以选择顺手的工具使用.下面使用的是名为Putty(putty.rar)的Linux远程连接工具.该工具 ...

  5. github修改仓库项目的语言类型

    github是 采用Linguist来自动识别你的代码应该归为哪一类. 解决方法: 我们可以在仓库的根目录下添加.gitattributes文件: ## 使用 `.gitattributes` 配置文 ...

  6. 以JSONobject形式提交http请求

    总结一下设置图标的三种方式: (1)button属性:主要用于图标大小要求不高,间隔要求也不高的场合. (2)background属性:主要用于能够以较大空间显示图标的场合. (3)drawableL ...

  7. https://quotefancy.com/ 经典句子(英语) 真是特别好~

    https://quotefancy.com/ 经典句子(英语)

  8. vue面试相关

    (1)什么是mvvm?    MVVM是Model-View-ViewModel的缩写.mvvm是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑:View ...

  9. 用宿主机创建一个容器bind命令的应用

    先创建一个网页目录 [root@docker ~]# mkdir /app/wwwroot -p 用bind运行,源目录为刚才创建的 [root@docker ~]# docker run -itd ...

  10. 面向UI编程思想

    UI编程思想: 模块化+组合 模块化是分解: 组合是合成: https://www.cnblogs.com/feng9exe/p/11044134.html