Python3.4 + Django1.7.7 搭建简单的表单并提交

后面还有一个问题,是我把txt生成了,但是网页没有返回我还不知道,现在怎么直接返回txt并且展示出来txt 的内容,希望大牛不吝赐教

首先有一个问题

django1.7之前,这样用:

HttpResponse(simplejson.dumps({“status”: ‘200’, “message”:u’登录成功’}), mimetype=’application/json’)

没问题,但是django1,7之后就报错了,查了下问题发现应该这样用:

HttpResponse(simplejson.dumps({“status”: ‘200’, “message”:u’登录成功’}),
content_type
=’application/json’)

html模版:

<html>
<style type="text/css">
    {# <ul class="errorlist">。。。</ul> #}
    {# ul标签下的class="errorlist"的属性进行渲染 #}{# 标签下的属性 #}
    ul.errorlist {
        margin: 0;
        padding: 0;
    }
    {# <ul class="errorlist"><li>单词个数低于4个!</li></ul> #}
    {# errorlist class下的 li标签内的元素进行渲染 #}{# 属性下一级的标签 #}
    .errorlist li {
        background-color: red;
        color: white;
        display: block;
        font-size: 10px;
        margin: 0 0 3px;
        padding: 4px 5px;
    }
    .field{
        background-color:#BCD8F5;
    }
</style>
<head>
    <title>Contact us</title>
</head>
<body>

    {% if form.errors %}
        <p style="color: red;">
            Please correct the error{{ form.errors|pluralize }} below.
        </p>
    {% endif %}

    <form action="" method="post">
        <div class="field">
		This is a brief description of Interim Fix :
            {# 自动生成的默认错误信息显示 #}
            {# 会被翻译成:<ul class="errorlist"><li>这个字段是必填项。</li></ul> #}
            {{ form.subject.errors }}
            <label for="id_subject">12</label>
            {{ form.subject }}
            {# 自定义的错误信息显示 #}
            {% if form.subject.errors%}
            <label for="id_self_def_error_info" style="color: red;">
                *自定义错误信息:主题不能为空
            </label>
            {% endif %}

        </div>
        <div class="field">
            {{ form.email.errors }}
            <label for="id_email"> for IBM SPSS Data Collection DDL 7 ("Software").</label>
            {{ form.email }}
        </div>
        <div class="field">
            {{ form.message.errors }}
            <label for="id_message">页面中自定义的信息:</label>
            {{ form.message }}
        </div>
        <input type="submit" value="提交">
    </form>
</body>
</html>

form.py

#coding: gb2312
from django import forms

class ContactForm(forms.Form):
    subject = forms.CharField(max_length=10,label='subject')#设置最大长度为10
    email = forms.EmailField(required=False,label='Email')#非必要字段
    message = forms.CharField(widget=forms.Textarea,label='message')#指定form中组件的类型

    #自定义校验规则,该方法在校验时被系统自动调用,次序在“字段约束”之后
    def clean_message(self):
        message = self.cleaned_data['message']#能到此处说明数据符合“字段约束”要求
        num_words = len(message.split())
        if num_words < 0:#单词个数
            raise forms.ValidationError("your word is too short!")
        return message

views.py

#coding: gb2312
from django.http import HttpResponse
import datetime,calendar
import time
from django.http import HttpResponse
from django.template import Context
from django.template.loader import get_template
from django.http import HttpResponse, Http404
from django.contrib.auth.models import User
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.contrib.auth import logout
from django.template import RequestContext
#from django import form

from django.shortcuts import render
from .forms import ContactForm
#from django.shortcuts import render_to_response
#from django_manage_app.forms import ContactForm

def current_datetime(request):
    now = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
    html = '<html><body>It is now %s.</body></html>' %now
    return HttpResponse(html)

def contact_author(request):
    if request.method == 'POST':#提交请求时才会访问这一段,首次访问页面时不会执行
        form = ContactForm(request.POST)
        if form.is_valid():#说明各个字段的输入值都符合要求
            cd = form.cleaned_data#只有各个字段都符合要求时才有对应的cleaned_data
            #print (form.cleaned_data())
            print (cd['subject'])
            print (cd['email'])
            print (cd['message'])
            return HttpResponseRedirect('/thanks/')
        else:#有部分字段不符合要求,会有error相关信息给加到form中去,需要覆盖掉
            #print (form)
            print ('The data does not meet the requirements')
            print (form['subject'].errors)
            print (form['email'].errors)
            print (form['message'].errors)
    else:#首次访问该url时没有post任何表单
        form = ContactForm()#第一次生成的form里面内容的格式
        print (form)
        print (form.is_valid())

    #“首次访问”和“提交的信息不符合要求”时被调用
    return render_to_response('contact_author.html', {'form': form})

def thanks(request):

    return render_to_response('thanks.html')

def download_file(request):
    #from django.http import HttpResponse
    ## CSV
    #import csv
    #response = HttpResponse(mimetype='text/csv')
    #response['Content-Disposition'] = 'attachment; filename=my.csv'
    #writer = csv.writer(response)
    #writer.writerow(['First row', 'Foo', 'Bar', 'Baz'])
    #writer.writerow(['Second row', 'A', 'B', 'C', '"Testing"', "Here's a quote"])  

    # Text file  #要是返回txt放开这部分代码 return response
    #response = HttpResponse(content_type="text/plain")
    #response['Content-Disposition'] = 'attachment; filename=my.txt'
    #response.write("aa/n")
    #response.write("bb")   

    # PDF file
    #http://code.djangoproject.com/svn/django/branches/0.95-bugfixes/docs/outputting_pdf.txt
    #from reportlab.pdfgen import canvas  #need pip install reportlab
    #response = HttpResponse()#)mimetype='application/pdf')
    #response['Content-Disposition'] = 'attachment; filename=somefilename.pdf'
    #p = canvas.Canvas(response)
    #p.drawString(100, 100, "Hello world.")
    #p.showPage()
    #p.save()
    #response = HttpResponse()
    fout=open("mysite//test.txt","wt")
    str = "hello world"
    fout.write(str)
    fout.close()
    #response['Content-Disposition'] = 'attachment; filename=test.txt'
    data = open("mysite//test.txt", "rb").read()

    html = '<html><body>%s</body></html>' %str
    return HttpResponse(data, content_type="text/plain")

 参考文献:

http://blog.chedushi.com/archives/7538





时间: 2025-01-01 16:04:41

Python3.4 + Django1.7.7 搭建简单的表单并提交的相关文章

Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交

        在Java EE应用编程中Servlet是基础,JSP是建立在Servlet基础之上的,其他Web框架如Struts.WebWork和Spring MVC都是基于Servlet的.本文主要讲述MyEclipse和Tomcat配置Servlet的过程和简单实现表单提交功能.         希望对大家有所帮助,参考书籍<Java EE企业级应用开发实例教程>.         Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 一. Servlet编程

Smarty简单生成表单元素的方法示例_php实例

本文实例讲述了Smarty简单生成表单元素的方法.分享给大家供大家参考,具体如下: smarty生成表单元素功能实现的原理是:给smarty一个数组,用于生成和显示菜单或选项,另外在传递一个选项的值,用于默认选择的匹配: 示例如下: php文件:index.php <?php include("smarty_inc.php"); $smarty->assign('cust_ids',array(1000,1001,1002,1003)); $smarty->assig

jquery实现简单的表单验证_jquery

 jquery如何实现简单的表单验证,我们先跟大家分享一下实现思路. 大概思路: 先为每一个required添加必填的标记,用each()方法来实现. 在each()方法中先是创建一个元素,然后通过append()方法将创建的元素加入到父元素后面. 这里面的this用的很精髓,每一次的this都对应着相应的input元素,然后获取相应的父元素. 然后为input元素添加失去焦点事件.然后进行用户名.邮件的验证. 这里用了一个判断is(),如果是用户名,做相应的处理,如果是邮件做相应的验证. 在j

详解jQuery简单的表单应用_jquery

大致介绍 接下来的这几个博客是对前面所学知识的一个简单的应用,来加深理解 单行文本框 只介绍一个简单的样式:获取和失去焦点改变样式 基本结构: <form action="#" method="post" id="regFrom"> <fieldset> <legend>个人基本信息</legend> <div> <label for="username">

Javascript简单改变表单元素背景的方法_javascript技巧

本文实例讲述了Javascript简单改变表单元素背景的方法.分享给大家供大家参考.具体如下: 这里使用Javascript改变表单元素的背景,如改变文本框的背景 function colorChange(formName,formItem){ document.forms[formName.name].elements[formItem.name].style.backgroundColor = "#FFFFFF"; } 希望本文所述对大家的javascript程序设计有所帮助. 以

javascript实现的简单的表单验证_javascript技巧

表单验证几乎是不可缺少的,有的表单验证是在后台完成的,有的则是使用JavaScript在在前端完成基本的验证,这样可以有效的减轻服务器的压力,下面就介绍一下JS实现的最简单的表单验证.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <title></title> <script type="text/javascript&q

PHP简单处理表单输入的特殊字符的方法_php技巧

本文实例讲述了PHP简单处理表单输入的特殊字符的方法.分享给大家供大家参考,具体如下: <html> <body> <?php if ($_POST['submitted'] == "yes"){ $yourname = $_POST['yourname']; $yourname = trim ($yourname); $yourname = strip_tags ($yourname); $yourname = htmlspecialchars ($yo

java写出简单的表单程序

这是java程序下 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class FormDemo extends HttpServlet{  public void doGet(HttpServletRequest request,HttpServletResponse response){     try{    response.setContentType("text/html;ch

Smarty简单生成表单元素的方法示例

本文实例讲述了Smarty简单生成表单元素的方法.分享给大家供大家参考,具体如下: smarty生成表单元素功能实现的原理是:给smarty一个数组,用于生成和显示菜单或选项,另外在传递一个选项的值,用于默认选择的匹配: 示例如下: php文件:index.php <?php include("smarty_inc.php"); $smarty->assign('cust_ids',array(1000,1001,1002,1003)); $smarty->assig