Django为何物
Django是在网页开发中比较常用的一个框架,主要帮助搭建一个类似MVC的workflow. 免去了很多繁琐的网页界面交互的问题,作者还特别在官网上写
The web framework for perfectionists with deadlines.
意思就是为追求完美却又被迫在deadline之前完成所准备的一个工具。
环境搭建
作为anaconda的忠实粉丝,在Linux的操作环境中我还是在此安利一波。还记得去年用scrapy写爬虫的时候为了安装依赖走了很多弯路,由于当时使用的是homebrew,brew里面并没有srcapy,于是又研究了好半天设置环境变量等遇到的种种问题,最终还是放弃了决定安装ubuntu才搞定。后来很偶然的在微信上看到了anaconda才发现自己好蠢……
所以安装anaconda是为了在自己喜欢的python环境中进行开发,本文讲的内容也都是在python3的环境下开发。 首先选择要使用的python环境,如果是anaconda启用的方法是:
$ source activate 'your-env-name'
然后使用pip安装django(目前最新版本是1.11.2):
$ pip install Django==1.11.2
检查安装:
>>> import django
>>> print(django.get_version())
1.11
我比较喜欢的IDE是Jetbrain的PyCharm CE,个人认为CE已经完全满足我的需要了。
然后就可以cd到自己的目录下开始创建django web app了!
使用
在自己的目录下使用指令:
$ django-admin startproject mysite
之后会创建一个叫mysite的文件夹,里面的东西长这样:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
最有用的manage.py可以帮助你在command line中开启服务器,进入对应的python shell去测试生产的models的状况。
- 启动server:
$ ./manage.py server这样默认在127.0.0.1的8000端口开启,如果想再别的地方:xxx.xxx.xxx.xxx:xxxx
- 启动shell:
$ ./manage.py shell在使用自建的model时候不要忘记import:
>>> from appName.models import YourModel1, YourModel2
官网上给了一个制作投票软件的非常详细的教程,在此不多赘述。
小tips
-
在设计models的时候一定要考虑每类数据之间的关系:
在Django中有三种数据间关系:Many-to-many, Many-to-one, one-to-one, 具体参见官方的documentation - 充分利用Django的URL conf:
Django是可以帮助自定义url pattern的,例如:
url( r'^$', views.homepage, name='homepage' ),便是类似”127.0.0.1:8000/”
url( r'^(?P<voteresult_id>[0-9]+)/$', views.vote, name='vote' )便是类似”127.0.0.1:8000/123”
因此在使用GET request的时候会方便很多,不过要注意用户输入的内容如果在GET中要显示的话文本要在html中用js二次处理才可以,避免出现类似“/ \”等会混淆的字符串。 -
处理HttpResponse多用render:
这个就很直接了,为啥人家给了shortcut不用呢,使用render的时候不管是通过ajax生成的还是普通的post或者get都可以正确的反馈,节省了很多的时间。(不过前提要写好ajax😄) - 防止用户刷新界面:
这个小tip是针对在设计前端时的一个问题,我处理的方式是在进入链接之后即刻跳转到稳定界面,只要在HTML中添加window.location.href = "/result/";
类似这样的强制跳转就可以了,这也是目前我认为最简单的处理方式,当然你也可以用python的session来通过cache来判断,但是会很麻烦。
以后这里还会不定期的添加小tips如果有需要
–Haoyang