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

  1. <html>
  2. <style type="text/css">
  3. {# <ul class="errorlist">。。。</ul> #}
  4. {# ul标签下的class="errorlist"的属性进行渲染 #}{# 标签下的属性 #}
  5. ul.errorlist {
  6. margin: 0;
  7. padding: 0;
  8. }
  9. {# <ul class="errorlist"><li>单词个数低于4个!</li></ul> #}
  10. {# errorlist class下的 li标签内的元素进行渲染 #}{# 属性下一级的标签 #}
  11. .errorlist li {
  12. background-color: red;
  13. color: white;
  14. display: block;
  15. font-size: 10px;
  16. margin: 0 0 3px;
  17. padding: 4px 5px;
  18. }
  19. .field{
  20. background-color:#BCD8F5;
  21. }
  22. </style>
  23. <head>
  24. <title>Contact us</title>
  25. </head>
  26. <body>
  27.  
  28. {% if form.errors %}
  29. <p style="color: red;">
  30. Please correct the error{{ form.errors|pluralize }} below.
  31. </p>
  32. {% endif %}
  33.  
  34. <form action="" method="post">
  35. <div class="field">
  36. This is a brief description of Interim Fix :
  37. {# 自动生成的默认错误信息显示 #}
  38. {# 会被翻译成:<ul class="errorlist"><li>这个字段是必填项。</li></ul> #}
  39. {{ form.subject.errors }}
  40. <label for="id_subject">12</label>
  41. {{ form.subject }}
  42. {# 自定义的错误信息显示 #}
  43. {% if form.subject.errors%}
  44. <label for="id_self_def_error_info" style="color: red;">
  45. *自定义错误信息:主题不能为空
  46. </label>
  47. {% endif %}
  48.  
  49. </div>
  50. <div class="field">
  51. {{ form.email.errors }}
  52. <label for="id_email"> for IBM SPSS Data Collection DDL 7 ("Software").</label>
  53. {{ form.email }}
  54. </div>
  55. <div class="field">
  56. {{ form.message.errors }}
  57. <label for="id_message">页面中自定义的信息:</label>
  58. {{ form.message }}
  59. </div>
  60. <input type="submit" value="提交">
  61. </form>
  62. </body>
  63. </html>

form.py

  1. #coding: gb2312
  2. from django import forms
  3.  
  4. class ContactForm(forms.Form):
  5. subject = forms.CharField(max_length=10,label='subject')#设置最大长度为10
  6. email = forms.EmailField(required=False,label='Email')#非必要字段
  7. message = forms.CharField(widget=forms.Textarea,label='message')#指定form中组件的类型
  8.  
  9. #自定义校验规则,该方法在校验时被系统自动调用,次序在“字段约束”之后
  10. def clean_message(self):
  11. message = self.cleaned_data['message']#能到此处说明数据符合“字段约束”要求
  12. num_words = len(message.split())
  13. if num_words < 0:#单词个数
  14. raise forms.ValidationError("your word is too short!")
  15. return message

views.py

  1. #coding: gb2312
  2. from django.http import HttpResponse
  3. import datetime,calendar
  4. import time
  5. from django.http import HttpResponse
  6. from django.template import Context
  7. from django.template.loader import get_template
  8. from django.http import HttpResponse, Http404
  9. from django.contrib.auth.models import User
  10. from django.shortcuts import render_to_response
  11. from django.http import HttpResponseRedirect
  12. from django.contrib.auth import logout
  13. from django.template import RequestContext
  14. #from django import form
  15.  
  16. from django.shortcuts import render
  17. from .forms import ContactForm
  18. #from django.shortcuts import render_to_response
  19. #from django_manage_app.forms import ContactForm
  20.  
  21. def current_datetime(request):
  22. now = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
  23. html = '<html><body>It is now %s.</body></html>' %now
  24. return HttpResponse(html)
  25.  
  26. def contact_author(request):
  27. if request.method == 'POST':#提交请求时才会访问这一段,首次访问页面时不会执行
  28. form = ContactForm(request.POST)
  29. if form.is_valid():#说明各个字段的输入值都符合要求
  30. cd = form.cleaned_data#只有各个字段都符合要求时才有对应的cleaned_data
  31. #print (form.cleaned_data())
  32. print (cd['subject'])
  33. print (cd['email'])
  34. print (cd['message'])
  35. return HttpResponseRedirect('/thanks/')
  36. else:#有部分字段不符合要求,会有error相关信息给加到form中去,需要覆盖掉
  37. #print (form)
  38. print ('The data does not meet the requirements')
  39. print (form['subject'].errors)
  40. print (form['email'].errors)
  41. print (form['message'].errors)
  42. else:#首次访问该url时没有post任何表单
  43. form = ContactForm()#第一次生成的form里面内容的格式
  44. print (form)
  45. print (form.is_valid())
  46.  
  47. #“首次访问”和“提交的信息不符合要求”时被调用
  48. return render_to_response('contact_author.html', {'form': form})
  49.  
  50. def thanks(request):
  51.  
  52. return render_to_response('thanks.html')
  53.  
  54. def download_file(request):
  55. #from django.http import HttpResponse
  56. ## CSV
  57. #import csv
  58. #response = HttpResponse(mimetype='text/csv')
  59. #response['Content-Disposition'] = 'attachment; filename=my.csv'
  60. #writer = csv.writer(response)
  61. #writer.writerow(['First row', 'Foo', 'Bar', 'Baz'])
  62. #writer.writerow(['Second row', 'A', 'B', 'C', '"Testing"', "Here's a quote"])
  63.  
  64. # Text file #要是返回txt放开这部分代码 return response
  65. #response = HttpResponse(content_type="text/plain")
  66. #response['Content-Disposition'] = 'attachment; filename=my.txt'
  67. #response.write("aa/n")
  68. #response.write("bb")
  69.  
  70. # PDF file
  71. #http://code.djangoproject.com/svn/django/branches/0.95-bugfixes/docs/outputting_pdf.txt
  72. #from reportlab.pdfgen import canvas #need pip install reportlab
  73. #response = HttpResponse()#)mimetype='application/pdf')
  74. #response['Content-Disposition'] = 'attachment; filename=somefilename.pdf'
  75. #p = canvas.Canvas(response)
  76. #p.drawString(100, 100, "Hello world.")
  77. #p.showPage()
  78. #p.save()
  79. #response = HttpResponse()
  80. fout=open("mysite//test.txt","wt")
  81. str = "hello world"
  82. fout.write(str)
  83. fout.close()
  84. #response['Content-Disposition'] = 'attachment; filename=test.txt'
  85. data = open("mysite//test.txt", "rb").read()
  86.  
  87. html = '<html><body>%s</body></html>' %str
  88. 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. Docker仓库

    仓库是集中存放镜像文件的场所.有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分.实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(t ...

  2. 【Java集合系列】---总体框架

    个的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作,一般来说,这些数据项的类型都是相同的,或者基类相同(若使用的语言支持继承),列表或数组通常不认为是集合,因为其大小固定,但是事实上 ...

  3. Request JSON

    https://developer.android.com/training/volley/request.html Request JSON Volley provides the followin ...

  4. Querying CRM data with LINQ

    http://www.powerxrm.com/querying-crm-data-with-linq/ 如果不喜欢看SDK中的示例,这篇里面讲的非常详细,值得一看.

  5. pxe无人值守安装linux机器笔记

    最近做一些集群的测试的工作,做服务器测试最根本就是要安装系统,曾经我们用十几个光驱并行安装光驱的日子过去了,自从有了pxe一两天搭建好一个集群不是梦!当然做多了集群的搭建工作最多的感受就是,其实运维工 ...

  6. Unity UGUI图文混排(七) -- 下划线

    之前更新超链接的时候,忘了搭配实现一个下划线的功能,这篇文章就是来补上这一个功能,时间有点长,一方面没有很好的思路,一方面也没多少时间. 先在网上收集了一下下划线的实现操作,一种是在文本下再创建一个文 ...

  7. FORM的静态提交

     在form中进行保存时,如果使用commit_form的话会弹出信息提示"没有修改需要保存"或者"几条记录已保存"类似的字样,有时候不想被提示,可以使用A ...

  8. 插件开发之360 DroidPlugin源码分析(五)Service预注册占坑

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52264977 在了解系统的activity,service,broa ...

  9. javascript之DOM对象

    document方法 document.createElement(Tag) :创建一个html标签对象 document.getElementById(ID) :获得指定ID值的对象 documen ...

  10. I/O操作之文件压缩与解压

    与文件压缩与解压相关的类在java.util.zip包下 实例 //文件压缩 import java.io.File; import java.io.FileInputStream; import j ...