day17 Django 主机管理

s19day17

内容回顾:
1. jQuery
- 选择
- 操作
- 事件
2. Http协议
-
3. Django框架
版本:1.11
创建:
django-admin startprojcet xxx
cd xxx
python manage.py startapp app01

python manage.py runserver 127.0.0.1:8000

今日内容:
1. 请求生命周期
2. 主机管理
- 路由系统
- 视图函数
- ORM(操作数据库)
- 模板

内容详细:
1. 请求生命周期
- 网站本质:socket

服务端(网站):
1. 先启动并监听:80端口

3. 获取请求信息:
获取请求中的URL

根据URL在已经写好的路由关系中进行匹配:
[
/login/ login
/index/ index
]

def login(request):

请求头
请求体

处理请求

return
响应内容:
响应头\r\n\r\n<!DOCTYPE html><html lang="zh-cn">。。。</html>

断开

客户端(浏览器):
https://www.cnblogs.com/news/

2. 发送请求
- 连接:www.cnblogs.com:80
- 发送数据:
GET:
GET /news/?page=1&xx=11 http1.1\r\n
host:www.cnblogs.com\r\n
Accept-Encoding:gzip, deflate, br\r\n
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
\r\n\r\n
POST:
POST /news/?page=1&xx=11 http1.1\r\n
host:www.cnblogs.com\r\n
Accept-Encoding:gzip, deflate, br\r\n
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
\r\n\r\n
name=alex&pwd=123
3. 接收响应内容
响应头悄悄写到浏览器
响应体在浏览器上展示

断开

2. 主机管理:部门管理

- 创建procjet和app
- 修改配置文件:
1. 配置
MIDDLEWARE = [
‘django.middleware.security.SecurityMiddleware‘,
‘django.contrib.sessions.middleware.SessionMiddleware‘,
‘django.middleware.common.CommonMiddleware‘,
#‘django.middleware.csrf.CsrfViewMiddleware‘,
‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
‘django.contrib.messages.middleware.MessageMiddleware‘,
‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
]

2. 模板路径

TEMPLATES = [
{
‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,
‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)],
‘APP_DIRS‘: True,
‘OPTIONS‘: {
‘context_processors‘: [
‘django.template.context_processors.debug‘,
‘django.template.context_processors.request‘,
‘django.contrib.auth.context_processors.auth‘,
‘django.contrib.messages.context_processors.messages‘,
],
},
},
]

3. 静态文件目录

STATICFILES_DIRS = (
os.path.join(BASE_DIR,‘static‘),
)

- 写代码:
urls.py
from app01 import views

urlpatterns = [
# url(r‘^admin/‘, admin.site.urls),
url(r‘^login/‘, views.login),
url(r‘^index/‘, views.index),
]

views.py

def login(request):
if request.method == "GET": # 请求方法
request.GET
else:

request.GET # URL中取值
request.POST # 请求体取值

return HttpResponse(‘...‘)
return redirect(‘...‘)
return render(request,‘模板文件路径‘,{‘k‘:‘v‘})

return HttpResponse(‘欢迎登录‘)

def index(request):
return HttpResponse(‘欢迎登录‘)

- 创建用户表
models.py
from django.db import models

class UserInfo(models.Model):
id = models.AutoField(primary_key=True)
user = models.CharField(max_length=32)
pwd = models.CharField(max_length=64)
注册app
settings.py

INSTALLED_APPS = [
‘django.contrib.admin‘,
‘django.contrib.auth‘,
‘django.contrib.contenttypes‘,
‘django.contrib.sessions‘,
‘django.contrib.messages‘,
‘django.contrib.staticfiles‘,
‘app01.apps.App01Config‘,# "app01"
]

MySQL
settings.py

DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.mysql‘,
‘NAME‘:‘数据库名称‘, # 记得自己先去创建数据库
‘USER‘: ‘root‘,
‘PASSWORD‘: ‘xxx‘,
‘HOST‘: ‘127.0.0.1‘,
‘PORT‘: 3306,
}
}

procjet.procjet.__init__.py

不要用默认mysqldb,换成pymysql连接数据库

import pymysql
pymysql.install_as_MySQLdb()
SQLlite:
settings.py
DATABASES = {
‘default‘: {
‘ENGINE‘: ‘django.db.backends.sqlite3‘,
‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
}
}

执行命令:创建数据库表
python3 manage.py makemigrations
python3 manage.py migrate

- 对应关系
类 -> 表
对象 -> 行

- 数据库操作总结:
表级别:
from django.db import models

# 类对象数据库的表
class UserInfo(models.Model):
# 字段对应数据库中列
id = models.AutoField(primary_key=True) # 创建id列,自增,int,主键
user = models.CharField(max_length=32,null=False) # varchar(32)
pwd = models.CharField(max_length=64)
age = models.IntegerField() # int类型

class Department(models.Model):
"""
部门表
"""
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=32)

python manage.py makemigrations
python manage.py migrate

行:
增加:

models.UserInfo.objects.create(user="alex",pwd=‘123‘,age=18)

dic = {‘user‘:‘alex‘,‘pwd‘:‘123‘,"age":18 }
models.UserInfo.objects.create(**dic)

删除:

models.UserInfo.objects.filter(id=12,name=‘alex‘).delete()

dic = {‘user‘:‘alex‘,‘pwd‘:‘123‘,"age":18 }
models.UserInfo.objects.filter(**dic).delete()

修改:

models.UserInfo.objects.filter(id=12,name=‘alex‘).update(user=‘11111‘,pwd=‘xxxx‘)
models.UserInfo.objects.filter(**{...}).update(**{...})

查看:

# [obj,obj,obj,....]
v = models.UserInfo.objects.all()
# [obj,obj,obj,....]
v = models.UserInfo.objects.filter(....)
# obj
models.UserInfo.objects.filter(....).first()

# 获取一个对象;无、多都会报错
models.UserInfo.objects.get(id=1,name=‘alex‘)

3. 知识点

1. 路由系统

a. url添加起始和终止符
url(r‘^example/$‘, views.example),
url(r‘^example/add/$‘, views.example_add),

b. 传参

# 方式一

# http://127.0.0.1:8000/example_edit/?nid=11&xid=1

url(r‘^example_edit/$‘, views.example_edit)

def example_edit(request):
nid = request.GET.get(‘nid‘)
xid = request.GET.get(‘xid‘)
print(nid,xid)
return HttpResponse(‘编辑‘)

# 方式二:

# /example_edit/123/111/
url(r‘^example_edit/(\d+)/(\d+)/$‘, views.example_edit),

def example_edit(request,nid,xid):
print(nid,xid)
return HttpResponse(‘编辑‘)

# 方式三:

# /example_edit/123/111/
url(r‘^example_edit/(?P<xid>\d+)/(?P<nid>\d+)/$‘, views.example_edit),

def example_edit(request,nid,xid):
print(nid,xid)
return HttpResponse(‘编辑‘)

c. 路由分发
s19day17/urls.pyt
url(r‘^cmdb/‘, include(‘cmdb.urls‘))
url(r‘^openstack/‘, include(‘openstack.urls‘))

cmdb/urls.py
from django.conf.urls import url,include
from cmdb import views
urlpatterns = [
url(r‘^host/$‘, views.host),
]

openstack/urls.py
from django.conf.urls import url,include
from openstack import views
urlpatterns = [
url(r‘^host/$‘, views.host),
]

欠:
name
namespace

2. 视图函数
def example_edit(request,nid,xid):
request.method
request.GET
request.POST

return HttpResponse(‘文本‘)
return redirect(‘url‘)
# 打开模板,读取数据到内存
# {‘k1‘:‘v1‘},对模板中的特殊字符进行“渲染”
# 生成不含特殊标签(已经被替换完毕)的字符串
return render(request,‘模板路径‘,{‘k1‘:‘v1‘})

3. 模板语言

a. 单值

{{ msg }}

b. 索引 .

c. 循环

d. 判断

e. 母板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/plugins/bootstrap/css/bootstrap.css">
<style>
body{
margin: 0;
}
</style>
{% block css %} {% endblock %}
</head>
<body>
<div style="height: 48px;background-color: #1b6d85">
头部菜单
</div>
<div>
<div style="float: left;width: 20%;background-color: #dddddd;height: 500px;">
菜单
</div>
<div style="float: left;width: 80%">
{% block content %} {% endblock %}
</div>
</div>

{% block js %} {% endblock %}
</body>
</html>

{% extends "layout.html" %}

{% block content %}

<h1>编辑部门</h1>
<form method="post">
<div class="form-group">
<label for="t1">部门名称</label>
<input id="t1" type="text" class="form-control" name="title" value="{{ obj.title }}">
</div>
<input type="submit" value="修改" class="btn btn-default">
</form>

{% endblock %}

{% block js %}
<script></script>
{% endblock %}

欠:模板中函数
- simple_tag
- filter
- inlustion_tag

4. 补充:FK

作业:
1. 今天代码

2. 作业

原文地址:https://www.cnblogs.com/huangtiandi001/p/8319783.html

时间: 2024-10-11 21:04:27

day17 Django 主机管理的相关文章

【django小练习之主机管理界面】

需求: 利用django,js,bootstrap等实现登录,主机管理等操作. 实现截图 登录界面 主机界面,添加及编辑 部门管理界面 代码实现 目录层级 settings.py """ Django settings for day16 project. Generated by 'django-admin startproject' using Django 1.11.4. For more information on this file, see https://do

Django + Ansible 主机管理

本文分享内容如下: 内容目录 Django 基础 MVC ORM COMMAND AuthenticationAnsible 基础 配置 ad-hoc 命令集 python api代码解读 演示 创建虚拟化环境并进入python3/python -m venv venv(linux)source venv\bin\active(win) venv\Scripts\active 安装第三方库pip install -r requirements.txt 初始化python manage.py ma

一个简单的主机管理模拟程序

最近写的一个小练习,主要是把前面学的东西整合一下.写了一个简单的主机管理界面,主要是练习以下知识点: Session和Cookie进行登录验证(装饰器) 数据库的基本操作 (单表,1对多,多对多) Form的简单使用实现验证 Bootstrap模板写个简单界面 自定义分页 信号,中间件,CSRF,模板语言,JavaScript,AJAX等等 界面比较low,毕竟不是专业的. 附件里面是Django的源代码,3个文件放在一起winrar解压就可以打开

saltstack主机管理项目【day39】:主机管理项目开发

项目目标 salt state.apply -h "ubuntu,centos" -g "ubuntu,centos" -f "ubuntu,centos" 文件目录规划 配置文件详解 步骤一:创建一个salt salt配置文件 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Alex Li import os,sys if __name__ == "__main__"

项目二:主机管理-00-借鉴

主机管理+堡垒机系统开发 本节内容 需求讨论 构架设计 表结构设计 程序开发 1.需求讨论 实现对用户的权限管理,能访问哪些机器,在被访问的机器上有哪些权限 实现可以通过web页面对指定主机列表 进行 批量发布命令.文件 实现对用户操作进行纪录 2.架构设计 3. 表结构设计 参考 http://www.cnblogs.com/alex3714/articles/5286889.html 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多

saltstack主机管理项目:计主机管理项目命令分发器(三)

四.主机管理项目命令分发器 开发 命令格式如下: 01.salt.py 只是一个入口,没干什么事情 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:luoahong import os,sys if __name__ == "__main__":     os.environ.setdefault("DJANGO_SETTINGS_MODULE&

Django 之管理界面

     为新增的books应用开启管理界面 1.项目/setting.py文件的修改 (a) 将'django.contrib.admin'加入setting的INSTALLED_APPS配置中 (默认已经有.INSTALLED_APPS中的配置顺序是没有关系的) (b). 保证INSTALLED_APPS中包 含'django.contrib.auth','django.contrib.contenttypes'和'django.contrib.sessions', Django的管理工具需

Python学习笔记——进阶篇【第八周】———FTP断点续传作业&amp;批量主机管理工具

主机管理之paramiko模块学习 http://www.cnblogs.com/wupeiqi/articles/5095821.html 作业1:用socketserver继续完善FTP作业 作业2:开发一个批量主机管理工具 需求: 可以对机器进行分组 可以对指定的一组或多组机器执行批量命令,分发文件(发送\接收) 纪录操作日志 作业参考链接http://www.cnblogs.com/alex3714/articles/5227251.html

Django后台管理界面

之前的几篇记录了模板视图.模型等页面展示的相关内容,这篇主要写一下后台admin管理界面的内容. 激活管理界面 Django管理站点完全是可选择的,之前我们是把这些功能给屏蔽掉了.记得上篇中Django模型模型安装小结中,我们把settings.py中的部分内容屏蔽了,并添加了一个app,如下 1 INSTALLED_APPS = ( 2 ## 'django.contrib.admin', 3 ## 'django.contrib.auth', 4 ## 'django.contrib.con