一.Django安装
Django安装依赖于pyhon,必须先安装python,这里我们使用3.3的版本,Django的安装相当简单,使用pip包管理工具即可!
pip install Django==1.8.1
检测一下是否安装成功:
试着导入Django包看是否成功。(有没有注意到我的目录sqlmap,有时间我写一篇SQL注入方面的例子)
二.项目开发
新建第一个项目:
django-admin.py startproject demo1
cd demo1
创建应用:
python-admin.py startapp blog
配置文件添加(settings.py):
INSTALLED_APPS---------->blog
修改urls.py:
url(r'^blog/index/$','blog.views.index')(做一个映射--当访问blog/index/时,调用blog下views模块中的index方法)
blog.views.py:
增加index方法,与上面对应。
启动服务器:
python manage.py runserver
加载模板文件(静态):
render_to_response("dut.html",{})
模板路径设置:(Django 1.8+)
'DIRS': [os.path.join(BASE_DIR,'templates')],
注:os.path.join会智能地选择正确的后向斜杠”“进行连接,而不是前向斜杠”/”。不要在写成‘\templates’
三.MySQL数据库安装
sudo apt-get install mysql-server mysql-common mysql-client
pip install python-mysql(如出错参考:http://www.111cn.net/sys/CentOS/53617.htm)
数据库操作三部曲:
- Change your models (inmodels.py). ----> run python manage.py check
- Run python manage.py make migrations appname to create migrations for those changes
- Run python manage.py migrate to apply those changes to the database.
插入和更新数据
>>> p = Publisher(name='Apress',
... address='2855 Telegraph Ave.',
... city='Berkeley',
... state_province='CA',
... country='U.S.A.',
... website='http://www.apress.com/')
这个对象实例并没有 对数据库做修改。 在调用`` save()`` 方法之前,记录并没有保存至数据库,像这样:
>>> p.name = 'Apress Publishing'
>>> p.save()
选择对象
>>> Publisher.objects.all()
[<Publisher: Apress>, <Publisher: O'Reilly>]
数据过滤
>>> Publisher.objects.filter(name='Apress')
[<Publisher: Apress>]
>>> Publisher.objects.filter(name__contains="press")
[<Publisher: Apress>]
获取单个对象
>>> Publisher.objects.get(name="Apress")
<Publisher: Apress>
如果结果是多个对象,会导致抛出异常:
>>> Publisher.objects.get(country="U.S.A.")
Traceback (most recent call last):
...
MultipleObjectsReturned: get() returned more than one Publisher --
it returned 2! Lookup parameters were {'country': 'U.S.A.'}
如果查询没有返回结果也会抛出异常!
try:
p = Publisher.objects.get(name='Apress')
except Publisher.DoesNotExist:
print "Apress isn't in the database yet."
else:
print "Apress is in the database."
数据排序
在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序。 那么,使用 order_by() 这个方法就可以搞定了。>>> Publisher.objects.order_by("name")
[<Publisher: Apress>, <Publisher: O'Reilly>]
如果需要以多个字段为标准进行排序(第二个字段会在第一个字段的值相同的情况下被使用到),使用多个参数就可以了,如下:
>>> Publisher.objects.order_by("state_province", "address") [<Publisher: Apress>, <Publisher: O'Reilly>]
</pre><span style="font-size:18px;">我们还可以指定逆向排序,在前面加一个减号 <tt class="docutils literal"><span class="pre">-</span></tt> 前缀</span><pre name="code" class="python">>>> Publisher.objects.order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress>]
连锁查询
>>> Publisher.objects.filter(country="U.S.A.").order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress>]
限制返回的数据
>>> Publisher.objects.order_by('name')[0:2]
注意,不支持Python的负索引(negative slicing):
更新多个对象
>>> Publisher.objects.all().update(country='USA')
2
删除对象
Publisher.objects.filter(country='USA').delete()
Admin模块:
运行 python manage.py syncdb 。这一步将生成管理界面使用的额外数据库表。
提高工作效率的神器:
locals()
df -h(显示当前各分区使用情况)