从今日开始,公司的新后台系统,我将全部迁移到python的环境下,主要使用了Django与extjs4、jquery1.7的,数据库mysql5.5,容器是nginx。因为不考虑并发因素,所以在这里没有高深的python的线程处理,只是向刚毕业的大学生,几个框架的整合而已,没啥营养,我也是对于python的掌握,觉得Django这框架做的挺好的,模板处理、model层的映射等都比之前玩java时候玩得舒畅。
附件包里面就是简单的一个Django学习的路上的点点滴滴,以及整合了extjs,首先extjs与我而言,玩得比较熟练,所以没有必要在这里,等我把公司的考勤系统原样的搬上来,再来谈后续的事情。
用的开发工具主要是VIM、gedit、eclipse,用了几款python的开发工具诸如pydev、bpython、pycharm等等,还不如使用python shell来得实际。或者有没有童鞋能够推荐,比较geek的工具呢?
提供几个github上方面的例子工程,我的工程一直太大了,一直上传有问题。
才有restful架构方式,view.py中同样使用simplejson开源包,有助于以后从java实现http+json,改变为python编写。
采用pycharm工具
from django import forms from django.shortcuts import render from django.http import HttpResponse from django.template import loader, Context, Template from django.shortcuts import render_to_response from blog.models import Employee from blog.models import Author, Book import simplejson as json class Person(object): def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex def say(self): return self.name class UserForm(forms.Form): username = forms.CharField() password = forms.CharField() #name = forms.CharField(); #headImg = forms.FileField(); def index(req): if req.method == 'POST': form = UserForm(req.POST, req.FILES) if form.is_valid(): name = form.cleaned_data['username'] password = form.cleaned_data['password'] emp = Employee(); emp.name = name; emp.save() print form.cleaned_data['username'] print form.cleaned_data['password'] dict = {} info = 'Data log save success' dict['message'] = info dict['create_at'] = 'girl is back' dict['success'] = 'true' dict['data'] = 'ddd' list = [1, 22, 2, 3, 4, 666] return HttpResponse(json.dumps(dict)) if req.method == 'PUT': print 'update information ' print 'put' if req.method == 'DELETE': print 'delete' form = UserForm() return render_to_response('index.html', {'form': form}) def logout(req): del req def index2(req): t = loader.get_template('python01.html') c = Context({}) return HttpResponse(t.render(c)) def index4(req): t = Template('<h1>hello {{name}}</h1>') c = Context({'name': 'IBYoung'}) return HttpResponse(t.render(c)) def index5(req): user = Person('cywhoyi', '27', 'FEMALE') persons = Employee.objects.all() return render_to_response('python01.html', {'name': user, 'persons': persons}) def index3(req): #user = {'name':'chenyang','age':27,'sex':'male'} user = Person('cywhoyi', '27', 'FEMALE') persons = ['peter', 'tom', 'terry'] return render_to_response('python01.html', {'name': user, 'persons': persons})
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>GodFather</title> </head> <script language="JavaScript" type="text/javascript" src="/static/js/jquery-1.7.min.js"></script> <link rel="stylesheet" type="text/css" href="/static/extjs4/resources/css/ext-all.css"/> <script type="text/javascript" src="/static/extjs4/ext-all-debug.js"></script> <script type="text/javascript" src="/static/extjs4/locale/ext-lang-zh_CN.js"></script> <!--ExtJs框架结束--> <script type="text/javascript"> Ext.onReady(function () { //初始化标签中的Ext:Qtip属性。 Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side'; //提交按钮处理方法 var btnsubmitclick = function () { /* if (form.getForm().isValid()) { form.getForm.submit(); //通常发送到服务器端获取返回值再进行处理,我们在以后的教程中再讲解表单与服务器的交互问题。 Ext.Msg.alert("提示", "登陆成功!"); }*/ if (!form.getForm().isValid()) return; form.getForm().submit({ waitMsg: '正在提交数据', waitTitle: '提示', url: '/blog/index/13', method: 'POST', success: function(form, action) { Ext.Msg.alert('提示', '保存成功'); }, failure: function(form, action) { Ext.Msg.alert('提示', '原因如下:'); } }); } //重置按钮"点击时"处理方法 var btnresetclick = function () { form.getForm().reset(); } //提交按钮 var btnsubmit = new Ext.Button({ text: '提 交', handler: btnsubmitclick }); //重置按钮 var btnreset = new Ext.Button({ text: '重 置', handler: btnresetclick }); //用户名input var txtusername = new Ext.form.TextField({ width: 220, allowBlank: false, maxLength: 25, name: 'username', fieldLabel: '用户名', blankText: '请输入用户名', maxLengthText: '用户名不能超过20个字符' }); //密码input var txtpassword = new Ext.form.TextField({ width: 220, allowBlank: false, maxLength: 25, inputType: 'password', name: 'password', fieldLabel: '密 码', blankText: '请输入密码', maxLengthText: '密码不能超过20个字符' }); //表单 var form = new Ext.form.FormPanel({ url: 'blog/index/123', labelAlign: 'right', labelWidth: 45, frame: true, cls: 'loginform', buttonAlign: 'center', bodyStyle: 'padding:6px 0px 0px 15px', items: [txtusername, txtpassword], buttons: [btnsubmit, btnreset] }); //窗体 var win = new Ext.Window({ title: '用户登陆', iconCls: 'loginicon', plain: true, width: 380, height: 174, resizable: false, shadow: true, modal: true, closable: false, animCollapse: true, items: form }); win.show(); }); </script> <body> <!--HI,GIRL <form method="post" enctype="multipart/form-data"> {{form}} <input type="submit" value="OK"> </input> </form>--> </body> </html>
相关推荐
Django1.6 官方文档,官方出品的文档讲的比较清楚。
Django 1.6 官方文档英文版,文档版本Release 1.6.3.dev20140224172946
django1.6可以运行在python3下的网站建设软件,支持数据库长连接
Django1.6 的官方英文文档,一千多页,很适合入门作为参考资料!
Two scoop django1.6/1.8/1.11 高清资产包Two scoop django1.6/1.8/1.11 高清资产包
Two Scoops of Django: Best Practices For Django 1.6 (2014版)pdf
详细代码示例,绝对可以运行,Django1.6,Python2.7.6版本。 利用表单以及auth模块实现Django的注册、登录、注销、修改密码等功能
Two Scoops of Django: Best Practices for Django 1.6 is the last edition. We won't do another version of this book. After pouring our hearts into the 1.6 edition and dealing with extreme stress, we ...
使用diango + extjs3.4开发的一个项目原型,安装相关模块后可直接运行,不需要配置相关路径
使用django 集成的后台管理模块配置连接 sql server 2008 要求:python 2.7 django 1.6 mssql 1.6
setting文件中 if DEBUG 设置的参数都是在开发环境下的 static参数 url中的写法是这样 if settings.DEBUG: urlpatterns += static (settings.STATIC_URL, document_root = settings.STATIC_ROOT) ...
主要是一些我遇到过的小错误bug,包括Python django Extjs;还有实现一些新功能时的小记
Django是很好的web开发技术,用应用广泛的python语言写成
Django DOcumentation
Learing_Website_Development_with_Django_1.6版修改笔记。文档为linux下的文本文件,utf8编码。windows下可用浏览器打开,按utf8浏览。
解压后,进入django目录,运行 python setup.py install,启动安装。 Django被安装在 C:\Python27\Lib\site-packages Django1.6.3版本支持Python2.6.5以上版本,请注意。 献给公司有限制网络的同事们
django-project-template Django 1.6 / 1.7 / 1.8的项目模板。 如何安装 请参阅django1.x目录中的README.md。
Django的两个消息:Django 1.6的最佳实践这是我们管理功能请求的地方,并大声思考了有关。注意事项在提供有用的材料和成为教程之间,我们之间有一条很好的界限。 我们真的很喜欢冰淇淋。 即使我们出版了这本书。