1.搭建Django开发环境
1.安装python(版本3.5.1)
官网下载:https://www.python.org/downloads/release/python-351/
2.更新pip
命令:python -m pip install --upgrade pip
3.使用pip安装virtualenv
命令:pip install virtualenv 如需指定版本 pip install virtualenv==15.0.1
4.创建虚拟环境
命令:virtualenv xiaol_django_env
执行后输出:
Using base prefix 'f:\\python\\python35'
New python executable in C:\Users\Administrator\xiaol_django_env\Scripts\python.exe
Installing setuptools, pip, wheel...done.
这里C:\Users\Administrator\xiaol_django_env\Scripts\python.exe即为虚拟环境的位置
5.使用虚拟环境
命令:进入C:\Users\Administrator\xiaol_django_env\Scripts目录下执行activate命令
执行后输出:(xiaol_django_env) C:\Users\Administrator\xiaol_django_env\Scripts>代表成功
6.在虚拟环境中安装django
命令:pip install django 如需指定版本 pip install django==1.9.5
7.在虚拟环境中安装pymsql(连接数据库的驱动)
命令:pip install pymsql 如需指定版本 pip install pymsql==0.7.10
8.在虚拟环境中查看安装是否完成
命令:pip freeze(查看都安装了什么东西)
结果:
Django==1.9.5
PyMySQL==0.7.10
9.退出虚拟环境
命令: deactivite
10.查看真实环境安装情况
命令:pip freeze
结果:
virtualenv==15.0.1
备注:虚拟环境只是为在开发的时候不打乱本地环境的干净
至此安装完成。
2.Django命令行工具搭建项目(django-admin.py & manage.py)
1.概念:
django-admin.py是django的用于管理任务的命令行工具
manage.py是对django-admin.py的简单包装,每个project里会有一个自己的manage.py
2.查看帮助:
查找django-admin.py在什么地方:
命令:where django-admin.py
输出:C:\Users\Administrator\xiaol_django_env\Scripts\django-admin.py
查看django-admin.py帮助:
命令:django-admin.py help
查看django-admin.py具体参数的帮助:
命令:django-admin.py help 参数,比如django-admin.py help startproject
3.使用django-admin创建项目(最简单的项目,什么都不配置,只是创建启动访问):
1.在本地创建一个存放项目的文件夹,比如E:\code\django
2.在命令行将当前路径切换到E:\code\django目录
命令:cd E:\code\django
3.创建django项目(名称hello_django)
命令:django-admin.py startproject hello_django
输出:控制台没有任何输出,在e:\code\django里会创建hello_django文件夹
4.进入hello_django文件夹创建app(名称hello)
命令: cd hello_django
django-admin.py startapp hello
输出:控制台没有任何输出,在hello_django里会创建hello文件夹
5.在hello_django文件夹中启动项目
命令:manage.py runserver
6.访问http://127.0.0.1:8000地址
4.使用manage.py管理django后台:
1.在上步中,已经可以成功启动django项目了(hello_django),django还自带了一个管理后台,地址:http://localhost:8000/admin
2.但是此时是没有办法登录的,因为用户还没有创建,所以需要用manage.py去做这件事
a.停止服务(由于是我是接着上面做的,这里记录了所有的操作,如果服务没起就不用停止了)
b.同步django数据库:
命令:manage.py makemigrations (创建脚本)
manage.py migrate (执行脚本)
c.创建超级管理员
命令:manage.py createsuperuser
结果:出现一个交互式的shell界面,让填入用户名密码(这里是admin hello123)
注:如果忘了密码,可以用manage.py changepassword name修改密码
例如 manage.py changepassword admin
d.重启启动访问登录
3.写一个hello world页面
经过1和2的学习,现在已经可以正常启动Django了,这一节说怎么写一个hello world页面,所有的环境基础就是1和2中搭建的
1.在app模块中添加页面
具体为 hello_django\hello\views.py 中添加
2.在setting文件中加入对hello这个app的管理
具体为 hello_django\hello_django\settings.py 中修改
3.在urls文件中加入对这个页面的映射关系
具体为 \hello_django\hello_django\urls.py 中修改
4. 启动访问 http://localhost:8000/hello/
4.对urls.py的解释
解释:
路由配置文件(URL分发器),它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。就是以这种方式告诉Django对于每个URL的处理类。Django启动的时候回去加载urls.py文件,加载那个文件可以在hello_django\hello_django\setting.py中通过ROOT_URLCONF配置,如ROOT_URLCONF = 'hello_django.urls'(默认配置)
理解:
相当于spring mvc里的@RequestMapping的作用
基本语法:
urlpatterns = [
url(正则表达式, view函数, 参数, 别名, 前缀),
]
用法一(不带参数):
from django.contrib import admin
urlpatterns = [
# url(r'^hello/', views.hello),
]
用法二(不带参数):
urlpatterns = [
url(r'^hello/', 'hello.views.hello'),
]
备注:用法一和用法二是一样的,但是方法二在1.9版本后将不再推荐使用,被标记为过时
用法三(带参数):
urlpatterns = [
url(r'^hello/', 'hello.views.hello', {'name':'zhangsan'}),
]
相应的,view里去接收这个参数,修改为:
关于正则表达式:
1.定义url访问路径:
urlpatterns = [
url(r'^hello/\d{2}', views.hello),
]
访问的时候必须在hello后面带个两位数:http://localhost:8000/hello/22
2.传递url参数:
urlpatterns = [
url(r'^hello/(?P<id>\d{2})', views.hello),
]
意思是:在hello后面带个两位数字,并且,这个两位数字被作为参数传进去,参数名是id
相应的,view里去接收这个参数,修改为:
以下英文为urls.py文件自带的注释,里面的三个例子值得看
The `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/1.9/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
5.Django数据库配置
Django默认支持sqlite、mysql、oracle、postgresql数据库,像db2和sqlserver需要安装第三方的支持
配置Django数据库:\hello_django\hello_django\settings.py 文件中的 DATABASES
使用django-admin.py创建的新项目中,会默认使用sqlite数据库,默认配置如下
我们这里使用mysql数据库:
引擎:
django.db.backends.mysql
常用驱动程序:
MySQLdb(mysql-python):
特点:只支持到python2对3支持不好
网址:https://pypi.python.org/pypi/MySQL-python/1.2.5
mysqlclient:
特点:MySQLdb的一个分支,它支持3
网址:https://pypi.python.org/pypi/mysqlclient
PyMySQL:
特点:纯python的mysql驱动
网址:https://pypi.python.org/pypi/PyMySQL
驱动选择PyMySQL原因:纯python写的,不需要依赖别的东西,比如c++什么的
使用步骤:
1.安装驱动(已经在第一篇中安装过了)
2.改配置
3.建立数据库(hello_django_db),django不会帮你创建库,否则启动报错:Unknown database 'hello_django_db
4.修改\hello_django\hello_django\__init__.py文件,加入如下代码:
否则启动报:ImportError: No module named 'MySQLdb'
原因:Django默认会找MySQLdb
5.同步数据库的表
manage.py makemigrations (创建脚本)
manage.py migrate (执行脚本)
1.使用extra方法
解释:结果集修改器,一种提供额外查询参数的机制
说明:依赖model模型
用在where后:
Book.objects.filter(publisher_id=“1”).extra(where=[“title=‘python学习1’”])
用在select后
Book.objects.filter(publisher_id=“1”).extra(select={“count”:“select count(*) from hello_book”})
2.使用raw方法
解释:执行原始sql并返回模型
说明:依赖model多用于查询
用法:
book = Book.objects.raw("select * from hello_book")
for item in book:
print(item.title)
3.执行自定义SQL
解释:利用游标执行
导入:from django.db import connection
说明:不依赖model
用法:
from django.db import connection
cursor = connection.cursor()
#插入
cursor.execute("insert into hello_author(name) values('xiaol')")
#更新
cursor.execute("update hello_author set name='xiaol' where id=1")
#删除
cursor.execute("delete from hello_author where name='xiaol'")
#查询
cursor.execute("select * from hello_author")
#返回一行
raw = cursor.fetchone()
print(raw)
# #返回所有
# cursor.fetchall()