ajaxfileupload,想要给自己课题组做个网页?
最近因为要做一个小型的网站,需求很简单有点像公司内部的管理网站,和室友一起倒腾,发现了一些坑。我自己之前没有接触过python 但是发现真的非常好上手。
我们没人会前端,所以最怕修改网页,一开始选择了Flask框架,我搞了半天遇到各种坑(还要修改css 麻烦),中间件也不好用,劝大家用django,资料多,非常好用。
那么开始说重点,需要做的哪些东西。
http://python.usyiyi.cn/ 是主要的资料,里面是中文的资料建议一点点看下去。
1-项目环境搭建。
1.1第三方库准备
开发环境是mac os 和ubantu 推荐大家下载一个第三方的软件叫 "Anaconda" ,安装非常简单,直接运行脚本就好。
安装完了,可以到命令行运行 pip list。可以看到已经安装的python第三方库 。
此时我们是没有django的库的。
1.2IDE的安装
IDE 使用eclipse,讲一个工具Pydev,安装自行百度,点点就行。
然后 到Eclipse了 New->Project->Pydev->Pydev Django Project,一路next 。发现eclipse 找不到Django 环境,回来点击 click here to configure an interpreter 然后把python interpreter 中的名为python的删掉,那是系统默认的,改成anaconda目录 下 bin/里面的python。默认是2.7.11吧。忘记安装目录?一个命令 sudo find / -name anacon* 搞定~。找到以后加进去,到了图一这一步就结束。
(图1)
2-数据库配置和使用
2.1数据库连接文件配置
我选了mysql,当然在这之前mysql的帐号密码应该自己确定了吧。mysql配置应该简单。但是如果要支持远程访问,比如你把数据库放到云上,别人机器上,毕竟开发不是一个人的事,我自己遇到的坑是"关于 mysql 配置文件中的 bind-address",自行百度,解决方案是删除就好。(推荐几个mysql 连接的桌面软件,用Navicat ,或者mysql workbench 都是不错的)。(后来发现这里输入密码和帐号没什么用还是要去修改在与项目同名的app里面的setting)。现在在mysql自己创建一个database 取名随便。我叫test,其他字段应该不用解释了如图2。
(图2)
2.2创建APP(模块)
然后我们在工程里根目录右击->Django->Create App->输入名字就好。因为网页主要是MVC模式,创两个吧。一个叫db 专用于管理数据库(models 层) 第二个专用于后台逻辑。名字随便取因为可能要对应多个模块。django里面增加一个app 就需要在与项目同名的那个app的setting中Installed_app里面加入app名(如图4)。我们加入以后目录结构(如图3.)
(图3)
(图4)
2.3用django模型层建表
数据库正式开发,数据库创建,在db的models.py中 对应数据库中每个表写class,就是定义好字段,因为Django的目标是要程序员完全脱离数据库的操作。那么我们先不建表,cd 到你的工程目录去,用命令行 用打入 manage.py migrate 命令。效果如图5。
(图5)
如果你的配置是没错的,此时django 已经在你的数据库中建了很多表,都是django自带的,我也没有用起来,唯一用的是django自带的数据库管理界面,类似于Navicat,还支持搜索功能,自己去文档里 http://python.usyiyi.cn/django_182/intro/tutorial02.html 学吧。
然后在db的models里写一个表的代码。然后效果如图6 还是用了Manage 脚本。
from __future__ import unicode_literalsfrom django.db import models# Create your db here.class Message(models.Model): user_id = models.BigIntegerField(blank=True, null=True)(图6)
到这里表都结束了,实际开发中,我数据库都是先建好的,那我全部都要写每个类是不是很麻烦,有没有偷懒的办法呢?
答案是用./manage.py inspectdb
用了就知道,他会反向生成表的代码, 然后直接复制进models里面就好了。
3-url 解析
3.1url匹配处理函数
在Django中 一般url解析分为两层。
第一层负责解析APP的名,像我在test 里urls.py里写的(如图7)。第一个参数表示响应的url,第二个参数表示处理的模块。
(图7)
第二层是解析到具体的模块中的某个函数来响应对应的url。
比如在view app 中的urls.py(需要自己创建) 写的(图8)url(函数中第一个参数为匹配路径,后一个是对应函数名)里面的home对应view app中的views.py 里的函数home
(图9)
3.2静态网页配置
其实到这个时候已经可以实现响应了。(到这里还要解决一个问题 'Index/home.html')在哪里呢?我们此时创一个文件夹叫templates html都应该放在这里,Index 是一个模块的名字。你可以在templates下面建很多个文件夹,对应很多的APP模块。(html就不属于本文范畴了)此时目录结构为
(图10)
搞定了后别忘记在test的setting 里加上一句代码
(图11)
"就是DIRS"里面.想想也是,不然 Django怎么知道我们的html放在这里呢。
4-逻辑层(也就是最后一步了,怎么样把数据库的东西查出来,放到html中。)
4.1数据库中的数据
往表里插两条数据
(图12)
4.2动态显示数据
看下代码:html部分
(图13)
里面的{%%}是django 自带标签的自己看文档学一下就会。
(图14)
里面的Message.objects.all() 表示从Message表中取出所有数据。还有什么复杂查询自己看文档,一般都是filter exclude,django 还支持sql语句直接写,函数名叫raw().
context就是返回给页面的一个对象里面放了很多值。在python里叫字典(dict)
4.3启动服务器
最后我们用命令行来到我们的目录,敲./manage.py runserver (要支持所有端口 和外网访问加0.0.0.0)。然后出现
(图15)
4.4查看网页
再到浏览器敲127.0.0.1:8000 django默认端口 (图16)
4.5实际开发中问题
结果出来了。遇到具体问题就是查一些文档和stackoverflow。发现一个时区问题,建议和我改成一样。把test里面setting中的时区部分改成这样。否则你会有八个小时的时差,
(图17)
。还有啥问题可以和我讨论的可以留言。小弟也是刚做完这个项目从零开始。码字不易~小问题就不在这里说了。
界面日志界面
管理界面
评论界面
使用的技术
python、JavaScript、CSS、htmlMySQL 数据库jinja2 模板引擎Vue.js 界面框架Nginx Web服务器gunicorn WSGI服务器Supervisor 监控服务进程工具Fabric 自动部署工具学习过程
刚开始跟着作者的教程编写这样一个博客网站的时候感觉很困难,因为自己对web上的很多概念不了解,对web服务器是怎么运行也不清楚,所以不知道作者为什么要这么写代码。后来去学习了Django,知道了什么是ORM,什么是模板等一些概念后,并且能够使用Django搭建一个网站,再跟着作者学习就轻松了一些,希望我的学习过程对你有启发。当然,如果你只想快速的搭建一个网站,可以使用Django、Flask等免费开源的网站框架,而不用自己一步一步的去实现它。
请问这段代码的详细意思?
response.setContentType(MIME)的作用是使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。你要ajax输出给客户端的话你用json-lib就是:response.setContentType("application/json;charset=utf-8")。在上传文件后,会返回response,header中的content-type为*/*,这样设置,通常会导致客户端(浏览器)不能识别内容编码,如果客户端(浏览器)采用非UTF-8方式(比如gbk)解码,客户端就会产生乱码问题。
如何学习Struts2?
学习路线
Struts2开发环境搭建
Struts2 架构
Struts2 HelloWorldStruts2
配置文件
Struts2 动作
Struts2 拦截器
Struts2结果和结果类型
Struts2 值栈 OGNL
Struts 2文件上传
Struts 2数据库访问
Struts 2发送电子邮件
Struts 2验证框架
Struts 2本地化
Struts 2类型转换
Struts2主题和模板
Struts 2异常处理
。。。。。。
WebWork框架开始以Struts框架为基础,其目标是提供一个加强和改进框架Struts来使web开发的开发人员更容易。
一段时间后,WebWork框架和Struts社区联手打造的著名的Struts2框架。
Struts 2框架的特点:http://codingdict.com/article/5216
这里有一些强大的功能,可能会迫使你考虑Struts2:
POJO表单和POJO动作 - Struts2的Struts框架已经摆脱了动作表单组成部分, Struts2可以使用任何POJO接收的形式输入。同样现在可以看到任何POJO作为一个Action类。标签支持 - Struts2中,提高了表单标签和新标签允许开发人员编写更少的代码。AJAX 支持 - Struts2中已确认由Web2.0技术接管,并整合到产品中,通过创建AJAX标签,功能非常相似的标准Struts2 标签AJAX支持。易于整合 - Struts2 集成各种整合与其他框架如Spring,Tiles 和SiteMesh是现在更容易。模板支持 - 支持生成使用模板。插件支持 - 可以提高核心Struts2的特性,并增强使用插件。大量的插件可供Struts2。性能分析 - Struts2的分析,调试和分析应用程序提供了集成。除此之外,Struts还提供了集成的内置调试工具调试。易于修改标签 - Struts2的标签标注,可以调整使用Freemarker的模板。这并不需要JSP或Java知识。基本HTML,XML和CSS知识是足够修改标签。提倡少配置 - Struts2 促进较少的配置的帮助下,使用默认的各种设置值。不必配置的东西,除非它不符Struts2的默认设置。视图技术 - Struts2中有一个很大的支持多个视图选项 (JSP, Freemarker, Velocity 和 XSLT)以上只是Struts2的十大功能,这使得它是企业公司级应用框架。
Struts 2的缺点:
虽然Struts 2 的配备了一个伟大的功能列表,但我不会忘记提及关于Struts2一些缺点,将需要大量的改进措施:
更大的学习曲线 - 要使用MVC与Struts,你必须是习惯使用标准的JSP,Servlet API和大量精心设计的框架。欠佳的文档 - Struts有标准的servlet和JSP API的相比,更少的在线资源,许多用户第一时间发现网上Apache文档混乱和管理不善的组织。较少透明度 - Struts应用程序中,有很多幕后比正常的基于Java的Web应用程序,这使得它很难理解的框架。最后一点,一个好的框架应该提供通用的特性,许多不同类型的应用程序,可以利用它。 Struts 2是一个最好的网络架构和高度被用于开发富Internet应用程序(RIA)。
maxpostsize单位是多少?
1、介绍:tomcat7设置server.xml中connector
2、标签 maxPostSize="0" post
3、请求为不限制大小换个tomcat8以后发现报错,然后设置为具体值解决,tomcat:
4、默认大小2097152,当maxPostSize=0时,不限制;
5、maxPostSize=20971520时,为20M
6、你用ajax上传的吧,maxPostSize 不能限制。
不知道往哪个方面好?
对于php的学习,你不可避免的要经常与前端交互,这要求你必须掌握htmlcssjs。最好还能会jquery或者angularjs以及bootstrap。后三个可以让你开发前端更快捷
这里面的内容对于初学者入门php完全足够,前期不要用框架,基础语法整扎实了,至少你要会基本的搭建环境和发布项目,常量变量、运算符、表达式、数组、结构控制语句(ifswitchfor之类的)
php初学时,是面向过程的,对于学过C的同学会比较容易接受,他也提供面向对象的功能,上面的链接里也有基本介绍。
到了基础学好了,你应该开始学习linux下开发,要知道LAMP(LINUX+APACHE+MYSQL+PHP),基础学号后,推荐在ubuntu下使用phpstorm开发,(phpstorm资料自行百度,它公司jetbrains提供了很多语言的ide,交互很好,至少比zendphp和eclipse强,很漂亮,支持各种常见框架,第三方库的代码提示,功能也很强大,重要的是,他对学生和教师免费,在校学生和教师可以从他们的英文官网上申请免费使用,有三种方式,哪怕使用人工申请也很快,我人工申请的,一个下午就下来了,申请只是可以获得一个免费的离线激活码和激活账号,功能和原版是一样的)。
如果你希望让自己看起来专业一点,你可以开始学习linux的快捷键和phpstorm的快捷键,他们二者的快捷键足够让你离开鼠标。但是不推荐专门背记,因为浪费时间,平常用到鼠标的时候,就百度一下这个操作有没有快捷键就好了。当然你可以先找找他们的快捷键手册,先全部试一遍,知道有哪些快捷键。
你要学习session、cookie。这是与前端交互非常重要的工具。
然后就是学会如何相应ajax、sse、websocket请求。这对时下热门的H5尤其重要。
接下来,你需要学学正则表达式,你会经常用到的,说的简单了其实就是便于字符串查找和替换,但是应用广泛,比如对URL传递的参数类型判断和处理,你就可以用正则匹配它是数字,还是串。你也可以用用正则拆分一个文件的名称,获取文件后缀和文件名等等。
然后你需要学学文件操作、数据库操作(mysqli或者pdo,强烈推荐后者),这对于保存信息和向用户推送信息有大用处,比如QQ空间,你上传的图片、附件在后台都是php的文件操作,用户信息、日志、访客记录这些都需要存在数据库。
然后你就要开始学面向对象编程,很多框架都是基于面向对象的,比如国内常见的Yii和ThinkPHP。
最后你就要开始学习框架了,国内常见的Thinkphp,国产,中文文档齐全,学习方便,好理解。也有一些国外的比如Yii,zoop。没有绝对的好坏,对面向对象比较熟悉的可以使用后者,否则,学习能力不强,英文能力不强建议前者
推荐参考书《跟兄弟连学PHP》。涉及全面,讲解简单,样例充分,但不深入。总体而言是一个很好的入门教材。
至此,你算是熟练掌握了。你如果再有一些工作经验,你可以算的上高级工程师了。不要小看工作经验,基础扎实的情况下,工作是深入学习最快的途径,你会遇到很多课本上少见的,哪怕工作一年,也能完虐一年前的自己。
还没有评论,来说两句吧...