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. [Java基础] Java多线程-工具篇-BlockingQueue

    转载自: http://www.cnblogs.com/jackyuj/archive/2010/11/24/1886553.html 前言: 在新增的Concurrent包中,BlockingQue ...

  2. 面试题:判断两个字符串是否互为回环变位(Circular Rotaion)

    题干:   如果字符串 s 中的字符循环移动任意位置之后能够得到另一个字符串 t,那么 s 就被称为 t 的回环变位(circular rotation).   例如,ACTGACG 就是 TGACG ...

  3. 按照vue文档使用JavaScript钩子但是却不能执行动画?

    大家刚入VUE肯定是先去阅读文档, 在 进入/离开 & 列表过渡 这一章节有一小节 ---------  JavaScript钩子 详情见vue文档:  https://cn.vuejs.or ...

  4. 2017.11.15 hashmap的工作原理

    参考来自:http://blog.csdn.net/jeffleo/article/details/54946424 一 hashMap的基本概念 1.HashMap的定义 public class ...

  5. linux上MySQL改动password的各种方法,yc整理

    MySQL改动password的各种方法 整理了下面四种在MySQL中改动rootpassword的方法,可能对大家有所帮助! 方法1: 用SET PASSWORD命令 mysql -uroot my ...

  6. Java 多线程之 synchronized 和 volatile 的比較

    概述 在做多线程并发处理时,常常须要对资源进行可见性訪问和相互排斥同步操作.有时候,我们可能从前辈那里得知我们须要对资源进行 volatile 或是 synchronized 关键字修饰处理.但是,我 ...

  7. 微信小程序 - 表单验证插件WxValidate(自定义警告信息形式)

    弹出的形式对于用户来说,总是不太友好的 可能会出现层级问题(只需要设置一下提示的层级即可) WxValidate内置规则 以下代码拷贝即可使用~ wxml <form bindsubmit='s ...

  8. Jersey 1.18 API文档

    Jersey 1.18 API文档 我自己制作了Jersey 1.18 API CHM文档, 下载地址见: http://download.csdn.net/detail/chszs/7334869 ...

  9. java 学习帮助

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今 天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来 ...

  10. JUDE工具类图制作

    1. 类图图形元素 2. 连接线条 线的关系解释如下: 3. 创建一个类