pythondjangoddos_初始Django

开始玩耍Django

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVT的框架模式;最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件

框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的

django安装

pip install django==2.0.4(版本号)

pip install django默认安装最新版本

创建项目

django-admin startproject myproject

开启开发服务器

cd myproject:进入项目目录

python manage.py runserver:开启服务

python manage.py runserver 7000:改变服务监听端口

python manage.py runserver 0:8000:改变服务监听IP:端口

markdown

语法百度搜索:马克飞象

print('hello world')

django:音乐家的名字:优雅,新闻网站

Django

Django的数据库

sqllite3:django自带的,专门为初学者准备的

mysql:索引、引擎、事务(一致性,原子性、持久性、隔离性)

手动实现HTTP服务端

套接字:socket

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind(('',8000))

# 绑定可用端口IP

s.listen(5)

# 开启监听

with open('1.html','r', encoding='utf-8') as fp:

html_data = fp.read()

while 1:

c,c_addr = s.accept()

# 长连接:一直在连接状态

# 短链接:接收到请求,完成任务,即断开

# 一个request 返回一个reponse就断开了

data = c.recv(1024)

print(data.decode('utf-8'))

# data -> Connection -> keep-alive

html = "HTTP/1.1 200 OK\r\n" + \

"Server: bfe/1.0.8.18\r\n" + \

"Content-Type: text/html\r\n" + \

"\r\n" + \

html_data

c.send(html.encode('utf-8'))

c.close()

HTTP协议三次握手

a(192.168.1.203) -> SYN a = 1 -> b(192.168.1.20)

b -> ACK b = a + 1 -> a TIME_WAIT # 设置为更短的

# SYN泛洪攻击 DDOS

a -> ACK a = b + 1 -> b 连接建立

65535

Scapy 包 可以封装TCP数据包

标志位:

SYN:连接发起

ACK:请求响应

FIN:连接断开

TCP泛洪及DDOS

Django命令

开启django项目:django-admin startproject proname

开启子APP:python manage.py startapp app1

开启测试服务器:python manage.py runserver

承载压力极低,200-500之间,调试和访问信息输出,自动检测代码变更,并重新启动

tornado默认并不会这样

Django目录结构

- settings.py:整个项目的配置

- urls.py:项目的主路由文件

- wsgi.py:服务器协议文件,接管APP

- manage.py:命令行管理工具,

APP目录结构

app1

migrations: 保存迁移记录

__init__.py: 声明当前文件夹为一个包

admin.py:admin后台界面管理工具文件

app.py: app单元文件

test.py: 单元测试驱动的

models.py: 编写ORM

views.py: 视图文件

Django模板

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [],

'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',

],

},

},

]

创建项目目录下任意目录

配置与以上项中: 'DIRS': [],选项

静态资源:img,js,css,video

防盗链:

盗链行为:节约流量,流量费用()

settings.py配置:

STATICFILES_DIRS = (

os.path.join(BASE_DIR,'static'),

)

# static-> 静态资源目录

表单提交

CSRF:跨站请求伪造

{% csrf_token %}

提交

获取表单结果,通过name值做key构造的QueryDict值

def register(request):

account = request.POST.get('account')

password = request.POST.get('password')

ORM映射

对象关系型映射

SQLite3

mysql

oracle

postgersql

ORM对于原生的SQL效率不高,Django的ORM一直是被认为比较差劲的

开发效率高,开发者省事

一个表代表orm中的一个类

表中的一个字段 代表 类中的一条变量属性

ORM映射关系类必须继承自models.Model基类

class User(models.Model):

# 模型类 orm映射类

account = models.CharField(max_length=50)

password = models.CharField(max_length=50)

查找迁移文件

python manage.py makemigrations

迁移数据库

python manage.py migrate

Admin界面

管理ORM映射表的一套系统

具有操作数据库的权限,这个地方的用户密码是绝对安全

创建admin后台超级用户

python

自己的ORM表如何在admin界面下被看到

from django.contrib import admin

from . import models

# Register your models here.

admin.site.register(models.User)

# 注册 models.User到admin界面,

ORM的DML语句

user = models.User.objects.get(account=account,password=password)

# get: 只能返回单条结果

响应式布局

bootstrap

bootmetro

常见行业关键词

QueryDict

Domain:一个域名中的最重要的部分

https://www.baidu.com/abc/?a=1#

https://: scheme

domain:www.baidu.com

/abc/:path

?a=1&b=1:Query

#:锚点符:在整个页面定位

Django

手动的写一个models类,实现一下简单的登陆注册

注册:怎么去创建数据 用ORM

注册步骤

注册子应用

在主应用里settings.py INSTALLED_APPS = [

注册子应用‘app’ #注册子应用

]

在子应用里的models.py文件里创表

class(models.model)

name = models.CharFieid(max_length=50)

password = models.CharFieid(max_length=255)

数据库迁移

在终端窗口里输入迁移命令:

python manage.py makemigrations#检测是否有更新的数据

python manage.py migrate #更新数据库的数据

配置到admin.py文件里

(1) from . import models

(2) admin.site.register(models.User)

注册后台管理员

python manage.py createsuperuser

渲染前台页面

{% csrf_token %}

用户名:

密码:

10个vue项目都可以启动

Vue

node.js:前端的后端语言

哥斯拉js,reactjs,vue.js

安装node.js

安装node.js

配置环境变量

确保CMD窗口下可用npm命令

npm install -g cnpm --registry=https://registry.npm.taobao.org

配置CNPM

cnpm config set cache "C:\nodejs\node_cache"

cnpm config set prefix "C:\nodejs\node_global"

创建项目

vue init webpack pronname

进入到项目目录

cd proname

安装依赖

cnpm install

开启服务

cnpm run dev

### admin控制台

> `admin`控制台是`django`为我们提供的一个非常便捷的用来管理数据库的界面

>

> 在主控路由文件下,其实你已经看到了它对应的路由设置:`path('admin/', admin.site.urls),`

> 进入`admin`界面,初次访问连接:`127.0.0.1/admin`,会提示我们输入账号密码,这是因为`django`的`admin`界面是需要一个超级管理员来登陆访问的,所以还需要我们创建对应的`admin`界面下的超级用户

- 创建`admin`超级用户,使用`manage.py`命令行工具执行如下命令

python manage.py createsuperuser

Username (leave blank to use ‘lienze’): rootEmail address:Password:Password (again):This password is too short. It must contain at least 8 characters.This password is too common.This password is entirely numeric.Password:Password (again):This password is too common.This password is entirely numeric.Password:Password (again):Superuser created successfully.

> 以上是我们创建超级用户的过程,非常坎坷;

>

> 可以看到,在输入太短(不满足8位),或是只包含数字的简单密码,超级用户的创建都是被拒绝的

>

> 所以我们把用户账号创建为`root`,而密码创建为`a1234567`,

- 接下来开启测试服务器,并通过创建好的超级用户登陆访问,如果幸运的话,你已经可以看到后台的`admin`界面啦

> `admin`界面已经展示出了默认`django`所使用的两张表,用户表和组表,用来保存当前管理后台的用户以及对应权限分组,可以点入用户表查看其中我们刚创建的`root`。

### admin注册表

> 问题还是有的,虽然`admin`界面已经可以登入,但是为什么看不到刚才创建的`Weather`表呢

>

> 这是因为默认的表创建之后,还需要通过对应app下的`admin.py`文件进行`admin`后台注册,只有注册在这个文件中的模型类对应的表才可以在`admin`界面所看到

- 在app下的admin.py文件中进行模型类的注册

#myapp/admin.pyfrom django.contrib import adminfrom myapp import modelsadmin.site.register(models.Weather)#使用register函数接收模型类作为参数即可完成注册

> 注册成功之后,在服务器,通过浏览器访问`admin`界面,就可以看到创建好的`Weather`表了

- 鼠标点击进去之后,就可以看到对应的表数据界面;右上角提供了可以添加功能的选项,试试给这个表来一些数据吧,这里我们添加了三条数据

阴天,晴天,打雷了

标签:manage,admin,py,django,models,python,Django,初始

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值