django初期

django初期

pip install django==2.0.4(版本号)

pip install django默认安装最新版本

创建项目
django-admin startproject myproject
1
开启开发服务器
cd myproject:进入项目目录

python manage.py runserver:开启服务

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

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

markdown
语法百度搜索:马克飞象

print('hello world')
1
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:跨站请求伪造
<form action="/register/" method="POST">
    {% csrf_token %}
    <input type='text' name='account'>
    <input type='text' name='password'>
    <button type="submit">提交</button>
</form>


获取表单结果,通过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


渲染前台页面

<form method="post">
    {% csrf_token %}
    用户名:<input name="name">
    密码:<input name="passwd" type="password">
    <button type="submit"></button>
</form>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值