Django

- 路由系统 url.py
- 视图函数 views.py
- 数据库操作 models.py
- 模板引擎渲染
- HttpReponse(字符串)
- render(request,'/path/a.html',{'name':'root'})

一、示例:用户基本CURD

1.数据库设计

id hostname ip port status

2.功能的实现

预备:
创建project django-admin startproject mysite
创建app cd mysite
python manage.py startapp app01
配置模板路径 settings.py
TEMPLATE
DIRS: [os.path.join(BASE_DIR,'templates'),]
配置静态文件 settings.py
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static'),
)

二、路由系统 urls.py

a. /^servers$ -> servers
b. url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user_new),
c. url(r'^edit_user_new-(\d+).html$', views.edit_user_new,name='bbb'),
{% url "bbb" 1 %} ==> edit_user_new-1.html
d. url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user_new, name='nnn'),
{% url "nnn" nnid=1 %} ==> edit_user_new-1.html
e.
主urls.py
url(r'^cmdb/', include('app01.urls')),
url(r'^config/', include('app02.urls')),
app01 urls.py
...
app02 urls.py
...

三、视图函数 views.py

获取请求信息:
request.POST {'username':'root'..}
request.GET
request.FILES
request.method
request.body = username=root;age=18;gender=male

响应结果:
return HttpReponse(..)
return render(request,'path/a.html',{})
return redirect('http://www.baidu.com')

四、Django数据库操作

1. 类 --> 数据库的表

字段 --> 列
对象 --> 一行数据
class UserInfo(models.Model):
nid = models.AutoField(primary_key=True)
username = models.CharField(max_length=32)
pwd = models.CharField(max_length=64)
age = models.IntegerField()

2. 根据app的models.py生成数据库表

python manage.py makemigrations
python manage.py migrate

PS: settings注册app名字
注意:
MySQL
- 手动创建库名
- settings.py 中配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}
- Django默认链接MySQL:
- MySqlDB
- pymysql
在配置目录的init.py中:
import pymysql
pymysql.install_as_MySQLdb()

3. 数据库基本操作

a. 查
models.tb.objects.all()
models.tb.objects.filter(nid=1)
models.tb.objects.filter(nid=1).first()

b. 增
models.tb.objects.create(...)

obj = models.tb(...)
obj.save()
c. 删
models.tb.objects.all().delete()
models.tb.objects.filter(nid=1).delete()
d. 改
models.tb.objects.all().update(...)
models.tb.objects.filter(nid=1).update(...)

五、模板引擎

特殊规则:
- 1
{{k1}}

- 2
{% if a == 123 %}

{% else %}

{% endif %}

- 3
{% for item in LIST %}
{{item}}
{% endfor %}
- 4
# 索引:字典.k1 列表.1

- 5.自定义模板方法
- filter: 在if条件中做条件时
- simple_tag: 在页面仅显示内容时

- 6. extends
- 模板的继承

- 7. include
- 导入公共组件

六、Cookie

- 是用户浏览器上的一个键值对
- 设置超时时间

利用cookie可实现:
- 登录验证
- 页面显示条数
- 拖动位置..

两大忌讳:
- 敏感信息
- 简单
七、Session
- 放置在服务器端的键值对

session = {
'asdfasdfasd': {'username':'hailong'},
'asdfasdfasdf': {username:'feinikesi'},
}

python 自动化之路 day 19 Django基础[二]的更多相关文章

  1. python 自动化之路 day 20 Django进阶/BBS项目【一】

    一.django进阶 1.django orm 增删改查 1.1.创建表: 1 2 3 >>> from blog.models import Blog >>> b ...

  2. python 自动化之路 day 07 面向对象基础

    本节内容:   面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法.   面向对象编程 OOP编程是利用"类"和"对象" ...

  3. day 66 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  4. day 53 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  5. Django基础二静态文件和ORM

    Django基础二静态文件和ORM 目录 Django基础二静态文件和ORM 1. 静态文件 1.1 静态文件基本配置: 1.2 静态文件进阶配置 2. request参数 3. Django配置数据 ...

  6. python 自动化之路 day 面向对象基础

    1.面向對象基础概述 面向过程: 根据业务逻辑从上到下垒代码(如果程序修改,对于依赖的过程都需要进行修改.) 函数式: 将某功能代码封装到函数中,如后便无需重复编写,仅需要调用函数即可 面向对象: 世 ...

  7. python 自动化之路 day 18 前端内容回顾、补充/Django安装、创建

    前端回顾: 整体: - HTML - CSS - JavaScript - 基本数据类型 - for,while.. - DOM - obj = document.getElementById('.. ...

  8. python 自动化之路 day 01 人生若只如初见

    本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 Python 注释 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式i ...

  9. python 自动化之路 day 05

    内容目录: 列表生成式.迭代器&生成器 装饰器 软件目录结构规范 模块初始 常用模块 1.列表生成式,迭代器&生成器 列表生成式 需求:列表[0, 1, 2, 3, 4, 5, 6, ...

随机推荐

  1. Oracle查询库中记录数大于2千万的所有表

    Oracle查询库中记录数大于2千万的所有表 假如当前用户拥有select any table权限,则可以使用下列sql语句: select table_name, num_rows from dba ...

  2. shell产生随机数七种方法

    shell实例浅谈之三产生随机数七种方法   一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大 ...

  3. http://www.binghe.org/2010/03/use-httpsurlconnection-in-java/

    http://www.binghe.org/2010/03/use-httpsurlconnection-in-java/

  4. Node.js 使用爬虫批量下载网络图片到本地

    图片网站往往广告众多,用Node.js写个爬虫下载图片,代码不长,省事不少,比手动一张张保存简直是天与地的区别.以前用Java也做过远程图片下载,但Node.js的下载速度更让人咂舌,这也是非阻塞式变 ...

  5. POJ 3083:Children of the Candy Corn(DFS+BFS)

    Children of the Candy Corn Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9311 Accepted: ...

  6. es6模块学习总结

    模块功能主要由两个命令构成:export和import. export用于输出对外接口,improt用于输人接口 exprot 可以输出变量,也可以输出函数.类. 输出变量的三种写法 // 写法一ex ...

  7. NodeJS实战——创建基础应用并应用模板引擎

    本次的目的是搭建一个最基础忽地可以实现功能的NodeJSserver,可以体现出NodeJS的工作流程以及开发的基本框架. 需求:已经安装了nodejs以及express. 一.构建基础的NodeJS ...

  8. lodash 判断相等 eq isEqual

    var object = { 'a': 1 }; var other = { 'a': 1 }; //true console.log(_.eq(object, object)) //true con ...

  9. DEB方式在UBUNTU安装ODOO 8.0

    odoo在ubuntu最简单最快速安装方式是deb方式,基本无需再去改数据库配置文件,全自动化了,odoo中文网推荐新手采用此方法 1 安装数据库:sudo apt-get install postg ...

  10. LRU的C++实现引申出的迭代器问题

    leetcode上刷题.碰到一题实现LRU算法的题目. LRU,Least recently used.是一种常见的cache和页面替换算法.算法和原理可以参阅相关wiki. leetcode上的这一 ...