个人知识管理站

分享个人生活、工作、学习过程中各种所学、所见、所闻,有趣的、好玩的、技术积累等各方面的内容。

您尚未登录。

公告

不积跬步无以至千里,不积小流无以成江海,网址:www.itecfun.com

#1 2015-02-11 09:38:30

xuyg
管理员
注册时间: 2015-01-21
帖子: 667

Python Django进行web开发的一些知识点总结--django快速上手

所谓的web开发就是使用程序进行网页、网站的开发工作,我个人觉得web开发做的最多的还是java,php,大概是我之前接触的只有这两个吧,最近再做python django的web开发,大致说说自己的一些学习心得。
web开发其实比应用程序开发简单很多,因为逻辑简单,数据结构简单,原理都是一样的。web开发的原理大致是一下:

1.基本的数据处理方法
这个就是python的基本语法,能够知道python的四则运算、字符串处理、集合类处理(python里面叫序列[]和字典{})。
所谓的序列,就是相同元素的一个集合,也就是数组,使用[]定义。python中对于序列的操作中,分片操作是最好用的,也是最常用的。python中字符串就是一个字符的序列,操作基本和序列相同。
所谓字典,就是大家都知道的hash表,通过{}定义,键值对存储方式,按照键值取值速度很快。通过.keys()、.values()这个两个方法可以分别返回字典的键序列(数组)、值序列(数组)。

2.html,css,js
这些语言都是用于web页面展示的,如果不需要做的很好看,你只需要知道简单的html即可了。这部分我就不多说了,如果还不懂,先学这些。

3.URL访问映射
在php或者java中,一般都是通过目录层次结构来访问remote远程文件,然后在这个被访问的文件中做相应的数据接受和处理操作。
在django中,是采用urls.py进行映射的。例如:

url(r'^report/$', 'report.views.report'),

例如urls.py中配置的这一行,表示所有以report结尾(不算?后面的get参数)的url,请求都发送到report包下面的views.py中的report方法。
另外需要说明一下的是django中html中引用link的css,js的文件,也是需要遵守上面的这个连接转发原则。所以一般会为这些资源文件作一个映射,如下所示:

	(r'^res/(?P<path>.*)', 'django.views.static.serve', {'document_root':settings.RES_DIR}), #resourse url

其中settings.RES_DIR是自己新增配置是在setting.py文件中:

	RES_DIR = os.path.join(os.path.dirname(__file__), '../report/templates/res').replace('\\','/')

相当于指定一个资源目录,比如我的资源目录是在../report/templates/res这个里面。做了这个配置之后,相当与以后资源文件请求中的/res/...全部映射到../report/templates/res中。

4.后台数据渲染到html
后台数据渲染到html,或者说后台数据如何传输到前端html,在django中,有非常方便的模版,使用起来非常的方便。大致说一说:

index_temp = loader.get_template('index.htm')
datas = {}
datas['html_title'] = 'JsHintAuto管理的项目列表'
datas['projects'] = [{'key':'wzw','name':'wzw','date':'wzw','description':'wzw',},{'key':'cxl','name':'cxl','date':'cxl','description':'cxl',}]
index_context = Context(datas) 
return HttpResponse(index_temp.render(index_context))

就是说使用index.htm这个html模版,然后传入的数据为index_context(Context),最后调用HttpResponse( index_temp.render( index_context ) )即可完成渲染。在模版index.htm中使用{{html_title}}的方式进行访问这个变量,而对于序列字典的访问都是使用点(.)号,例如:

 
{% for project in projects %}
<tr> 
  <td> 
    <h3 class="h3">       
     <a href="/report/?p={{project.key}}">{{project.name}}</a>
      <span class="desc">于{{project.date}}加入系统 >> <a href="/admin/?p={{project.key}}">{{manage_word}}</a></span>
    </h3>  <div class="post"> <p>描述:</p>{{project.description}}  </div>
  </td> 
</tr> 
{% endfor %}

5.表单get和post提交,以及django后台数据的获得
django中views.py里面的方法都具有一个参数是request,利用这个request可以获得get和post数据,例如:

	username = req.GET['username']rnpassword = req.POST['password']

另外,django处理form表单post请求的时候,会出现错误“CSRF verification failed. Request aborted.”这个问题网上有很多的解决方式,可以参考,但是最简单的处理方式如下:

	@csrf_exemptrndef loginValid(req):rn    passrn    #...

即在请求的那个方法上面加上一句注解:@csrf_exempt

6.身份验证session的使用

和post和get数据一样,session也可以通过request得到,不同的是session是request的一个属性,使用request.session就可以得到,session存储方式和字典是一样的,即:

	request.session['user'] = username #设置sessionrnusername = request.session['user'] #获得session

初次使用session,会报错“django no such table: django_session”,解决办法网上也很多,我这里也说一下:在cmd中切换到你的django项目中,执行python manage.py syncdb即可。
7.本地存储cookie的使用

目前没有使用过,大致猜测应该是和session一样的,request.cookie进行访问和赋值。后面再看看更新一下。
8.数据持久化
即:python和数据库之间的操作,利用python的第三方数据库驱动,可以方便的连接数据库,sqllite挺好用的一个小数据库,django后续版本中自带sqllite的驱动。
数据库那么多,其他的我就不一一介绍了。然后就是如何使用python和第三方的数据库驱动访问数据库,执行sql语句等等。
总结
写得比较简略,不过我个人觉得上面的这几点基本说出了基本的web开发中的要点,掌握这几点,作一个简单的网站基本没有什么问题,但是对于高并发,大数据相关的,继续好好学习吧。
对于django的web开发,如果掌握上面的几点,加上自己之前的web开发经验,我想迅速掌握上手开发,应该是不存在问题的

原文链接:http://cloudbbs.org/forum.php?mod=viewthread&tid=26232

离线

页脚

©2019 YG Wang 备案号: 赣ICP备19010196号-1