一个可使Web开发工做愉快而且高效的Web开发框架。 使用Django,使你可以以 小的代价构建和维护高质量的Web应用。html
Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其余WEB框架其优点为:大而全,框架自己集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。python
著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式链接在一块儿。mysql
模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。web
Django的MTV模式本质上与MVC模式没有什么差异,也是各组件之间为了保持松耦合关系,只是定义上有些许不一样,Django的MTV分别表明:sql
Model(模型):负责业务对象与数据库的对象(ORM)数据库
Template(模版):负责如何把页面展现给用户django
View(视图):负责业务逻辑,并在适当的时候调用Model和Template缓存
此外,Django还有一个url分发器,它的做用是将一个个URL的页面请求分发给不一样的view处理,view再调用相应的Model和Template服务器
pip3 install django # 默认安装 django 1.1 版本
1、建立django程序cookie
首先在在终端上要先选择路径 在执行 建立django命令
2、程序目录
3、配置文件
一、数据库
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'django_models', 'USER':'root', 'PASSWORD':'', 'HOST':'', 'PORT':'', } }
# 因为Django内部链接MySQL时使用的是MySQLdb模块,而python3中还无此模块,因此须要使用pymysql来代替 # 以下设置放置的与project同名的配置的 __init__.py文件中 import pymysql pymysql.install_as_MySQLdb()
TEMPLATE_DIRS = ( os.path.join(BASE_DIR,'templates'), )
三、静态文件
建立静态问价夹, 在settings 配置文件
STATICFILES_DIRS = ( os.path.join(BASE_DIR,'static'), )
http请求中产生两个核心对象:
http请求:HttpRequest对象
http响应:HttpResponse对象
所在位置:django.http
以前咱们用到的参数request就是HttpRequest 检测方法:isinstance(request,HttpRequest)
1 HttpRequest对象的属性:
path: 请求页面的全路径,不包括域名 method: 请求中使用的HTTP方法的字符串表示。全大写表示。例如 if req.method=="GET": do_something() elseif req.method=="POST": do_something_else() GET: 包含全部HTTP GET参数的类字典对象 POST: 包含全部HTTP POST参数的类字典对象 服务器收到空的POST请求的状况也是可能发生的,也就是说,表单form经过 HTTP POST方法提交请求,可是表单中可能没有数据,所以不能使用 if req.POST来判断是否使用了HTTP POST 方法;应该使用 if req.method=="POST" COOKIES: 包含全部cookies的标准Python字典对象;keys和values都是字符串。 FILES: 包含全部上传文件的类字典对象;FILES中的每个Key都是<input type="file" name="" />标签中 name属性的值,FILES中的每个value同时也是一个标准的python字典对象,包含下面三个Keys: filename: 上传文件名,用字符串表示 content_type: 上传文件的Content Type content: 上传文件的原始内容 user: 是一个django.contrib.auth.models.User对象,表明当前登录的用户。若是访问用户当前 没有登录,user将被初始化为django.contrib.auth.models.AnonymousUser的实例。你 能够经过user的is_authenticated()方法来辨别用户是否登录: if req.user.is_authenticated();只有激活Django中的AuthenticationMiddleware 时该属性才可用 session: 惟一可读写的属性,表明当前会话的字典对象;本身有激活Django中的session支持时该属性才可用。
HttpRequest对象的方法:get_full_path(), 好比:http://127.0.0.1:8000/index33/?name=123 ,req.get_full_path()获得的结果就是/index33/?name=123
二、HttpResponse对象:
在HttpResponse对象上扩展的经常使用方法:页面渲染:render,render_to_response,
页面跳转:redirect
locals: 能够直接将函数中全部的变量传给模板
return HttpResponse('ASD') return render_to_response('admin.html') return render(request,'admin.html') return redirect('/choutiadmin/login')
数据库配置
1 django默认支持sqlite,mysql, oracle,postgresql数据库。
<1> sqlite
django默认使用sqlite的数据库,默认自带sqlite的数据库驱动
引擎名称:django.db.backends.sqlite3
<2>mysql
引擎名称:django.db.backends.mysql
2 mysql驱动程序
MySQLdb(mysql python)
mysqlclient
MySQL
PyMySQL(纯python的mysql驱动程序)
3 在django的项目中会默认使用sqlite数据库,在settings里有以下设置:
若是咱们想要更改数据库,须要修改以下:
注意:NAME即数据库的名字,在mysql链接前该数据库必须已经建立,而上面的sqlite数据库下的db.sqlite3则是项目自动建立
USER和PASSWORD分别是数据库的用户名和密码。
设置完后,再启动咱们的Django项目前,咱们须要激活咱们的mysql。
而后,启动项目,会报错:no module named MySQLdb
这是由于django默认你导入的驱动是MySQLdb,但是MySQLdb对于py3有很大问题,因此咱们须要的驱动是PyMySQL
因此,咱们只须要找到项目名文件下的__init__,在里面写入:
import pymysql
pymysql.install_as_MySQLdb()
问题就解决了! 这时就能够正常启动了。 但此时数据库内并无内容,咱们须要作数据库的同步:
为了更好的查询修改数据库,咱们能够不使用Navicate,而是利用pycharm的Database
而后 ,安装MySQL的驱动(driver),这里须要建立一个密码(个人是123)安装成功后,
填入数据库的名字,mysql的用户名和密码,而后就能够进行链接了
成功后点击右下角的apply和OK。
这是你就能够看到数据库里的表和内容了:
是否是很方便呢?
若是你用的是sqlite数据库就更简单了,安装完驱动后,直接将sqlite拖动到Database就能够了: