您的位置:首页 > 编程语言 > Python开发

python小白-day15 Django基础

2016-05-06 23:11 661 查看
Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

django简介

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。

Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:

模型(Model),即数据存取层

处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

模板(Template),即表现层

处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。

视图(View),即业务逻辑层

存取模型及调取恰当模板的相关逻辑。模型与模板之间的桥梁。

基本结构:

安装django

基本命令

创建django程序

1.创建一个project工程和app

步骤如下



Project和App概念

Project是一个大的工程,

下面有很多功能:(一个Project有多个App,其实他就是对你大的工程的一个分类)

例如一个运维平台是一个工程,那么他的app就是CMDB,监控系统,OA系统,

2.生成数据库 创建超级管理员用户

注:此步骤是在pycharm的终端里使用命令实现的

登录页面:

3.路由

1.首先在helloword文件夹下(不是app目录,千万别写错)的urls.py填写路由规则

4.views函数

1.在helloapp(app)下面的views里写一个index函数

django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。

2.如果要返回html页面

当以上步骤都完成之后,在IDE终端中输入:

访问:http://127.0.0.1:8000

django路由系统

在Django的urls中我们可以根据一个URL对应一个函数名来定义路由规则如下:

每一个urls对应一个views里的函数

1.基本的urls对应

2.基于app的路由

根据app对路由规则进行一次分类

当app的urls很多的时候,那么就不能再工程的urls下面去设置
应该这样设置:

1.首先在helloword下面的urls这样设置

2.在helloapp下面创建一个urls.py

内容:

3.在helloapp下面的views里创建上面urls对应的函数

4.访问:

3.动态路由(传一个参数)

比如分页:当urls大量过多的时候比如几百个的时候,那么肯定不会去写几百个路由规则
所有这个时候就需要动态urls,使用正则表达式来完成

1.在helloapp下面的urls写入以下内容:

2.在helloapp下面的views写入以下内容:

3.测试访问:

4.动态路由(传多个参数)

多个参数它是已/来分割的

来一个url的加法

他的顺序是:正序的,你先给他传那个值,第一个参数就是那个

5.动态的路由(Key:value的形式)

这样我们就不必按照顺序去取了,可以通过key,value的方式来取传进来的值

注:可以根据传来的值来进行判断返回给用户指定的url,过程略。

6.基于反射的动态路由

仅仅是通过反射来实现的,通过文件找到里面的函数然后执行!
但是在Django中不建议使用此方法。因为不同的WEB框架建议你使用不同的方式,
Django就不建议使用反射


模板引擎

django使用jinja2为模板引擎

使用方法:

1.{item}

在helloapp下面的urls写入以下内容:

在helloapp下面views里面写入以下内容:

之后再index.html下面写入以下内容:

2.{% for item in item_list %} {{ item }} {% endfor %}

修改helloapp下面的views

修改index.html

3.{% if ordered_warranty %} {% else %} {% endif %}

修改helloapp下面的views

修改index.html

4.母板和子板:

母版:{% block title %}{% endblock %}

子板:{% extends "base.html" %}



上面、左侧的红色框体都没有变,变得是中间的内容是怎么实现的呢?就是通过母版来实现

1.创建母板

在django里一般在templates里创建一个名字叫master的文件夹里存放母版的html页面
而且母版只有一个,不知道能不能多个母版,但是为了统一和使用所以只使用一个母版



master/mamaindex.html页面内容

2.修改index.html(子板)

5.导入公共标签
如果有公共的模板需要在不同的html里使用。那么可以使用导入公共的方式,避免重复代码

步骤:

在templates里
创建一个include目录(名字可以随意定义),放入公共的html页面

1.在include里新建一个inindex.html页面

2.在index.html使用

Django静态文件配置

把所有的静态都放在static目录下,比如:css、js、imgs、等



配置引入static目录,
在settings里,否则无法使用static目录下的静态文件,
因为他找不到路径!的需要告诉django

在公共配置文件settings中最后添加:

1.母版使用css,子板可以继承母版的css

2.首先在工程目录下创建static

3.在static里创建css目录用来存放css文件

4.在settings里配置static目录

5.在static目录下创建mama.css
放入一下内容:

6.在templates里的master里的mamaindex.html(母版)

7.templates里的index.html写入以下内容:

django的Model基本操作和增、删、改、查

注:默认使用了sqlite3数据库

如果想使用其他数据库,请在settings里修改

1.创建数据库:

1、创建model类

在helloapp(或者你的app下)下models.py写入以下内容:

2.注册app(如果没注册,那么不能创建数据库表)

3.创建数据库结构

在IDE终端输入:

4.为了方便查询,所以将数据库注册到后台。通过admin后台来管理

2.增加数据

使用页面来进行注册用户和密码插入数据库

1.插入一个urls在helloapp下面的urls.py

2.在templates里面创建一个reg.html页面

3.在settings里注释中间件



4.在helloapp下的views里写入以下内容:

3.删除

[b]4.修改[/b]

[b]4.查询[/b]

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: