后面还有一个问题,是我把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




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

  1. Maven web项目(简单的表单提交) 搭建(eclipse)

    我们将会搭建一个,基于Maven管理的,具有简单的表单提交功能的web项目,使用DAO--service--WEB三层结构,服务器使用Tomcat 1 项目基本结构的搭建 左上角File---> ...

  2. PHP简单利用token防止表单重复提交

    <?php /* * PHP简单利用token防止表单重复提交 * 此处理方法纯粹是为了给初学者参考 */ session_start(); function set_token() { $_S ...

  3. 带有两个输入字段和相关标记的简单 HTML 表单:

    带有两个输入字段和相关标记的简单 HTML 表单: 意思就是说Male 和id="male"绑定在一起. <html> <body>   <p> ...

  4. PHP简单利用token防止表单重复提交(转)

    <?php/* * PHP简单利用token防止表单重复提交 */function set_token() { $_SESSION['token'] = md5(microtime(true)) ...

  5. 【java学习】Servlet简单的表单程序(一)

    此文用于java学习,在此小记. 在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识.(Servlet的相关知识摘抄自http://blog.csdn.net/jiuq ...

  6. 用jQuery写的最简单的表单验证

    近几天完成了关于我们项目的最简单的表单验证,是用jQuery写的,由于之前也一直没学过jQuery,所以自己也是一直处于边摸索边学习的阶段,经过这一段时间的学习,通过查资料啥的,也发现了学习jQuer ...

  7. angularjs学习第四天笔记(第一篇:简单的表单验证)

    您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点 ...

  8. Struts2之Action三种接收参数形式与简单的表单验证

    有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的A ...

  9. 简单实用的跨域表单POST提交

    我们这里使用了iframe嵌套form表单POST提交,很简单,却能满足get|post等任何复杂情况的要求:缺点是没有返回值. 针对需要的地方加上一个iframe嵌套并塞入隐藏form表单,然后获取 ...

随机推荐

  1. malloc_stats---检查内存泄露的神器

    在之前的博客中提到过,valgrind可以用来检测内存泄露,但在使用中,往往会遇到一些问题,给调试工作带来很多不必要的麻烦,我自己遇到的有以下两种: (1)内存泄露误检(系统初始化时,可能有一些需要长 ...

  2. Spark:聚类算法之LDA主题模型算法

    http://blog.csdn.net/pipisorry/article/details/52912179 Spark上实现LDA原理 LDA主题模型算法 [主题模型TopicModel:隐含狄利 ...

  3. Android图表库MPAndroidChart(十三)——简约的底部柱状图

    Android图表库MPAndroidChart(十三)--简约的底部柱状图 我们继续上一讲,今天还是说下柱状图,这个图的话应该是用的比较多的,所有拿出来溜溜,先看下效果 我们还是来看下基本实现 一. ...

  4. pycallgraph 追踪Python函数内部调用

    安装 安装pycallgraph 安装依赖 使用 待测脚本 追踪脚本 追踪结果 高级篇 隐藏私密函数 控制最大追踪深度 总结 GitHub上好代码真的是太多了,名副其实的一个宝藏.但是最近自己也反思了 ...

  5. VBA find方法

    Sub Sample() Dim sfzs As New Collection Dim ws, wbs, dbs As Worksheet Dim r As Long Set ws = ThisWor ...

  6. JVM概述

    JVM是什么 JVM全称是Java Virtual Machine(java虚拟机).它之所以被称之为是"虚拟"的,就是因为它仅仅是由一个规范来定义的抽象计算机.我们平时经常使用的 ...

  7. 阻尼回弹效果的ScrollView嵌套GridView

    以前写过一篇带阻尼回弹效果的ScrollView,但是有些小问题,于是又重新整理了一下,这篇文章一是一个带阻尼的Scrollview,再个就是Scrollview嵌套GridView实现,而GridV ...

  8. Hibernate缓存集成IMDG

    1 第三方缓存插件 除了Ehcache这种轻量级的缓存方案外,几乎所有IMDG产品都提供了对Hibernate二级缓存的直接支持,常用的有: Ø  Hazelcast Ø  GridGain Ø  J ...

  9. [ExtJS5学习笔记]第十一节 Extjs5MVVM模式下系统登录实例

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38815923 实例代码下载地址: http://download.csdn.net/d ...

  10. 【一天一道LeetCode】#290. Word Pattern

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...