keyfall / xuexibiji

3 stars 0 forks source link

Django2.1 #20

Open keyfall opened 5 years ago

keyfall commented 5 years ago

下载django,虚拟环境

pip install django==2.1 pip install virtualenv 报错根据提示进行更改语句就行

创建虚拟环境,激活,退出

创建
virtualenv 虚拟环境名称
激活
source bin/activate
退出
deactivate

利用django创建project,和startapp,项目名

django-admin startproject 项目名 python3 manage.py startapp app名`

数据库换mysql

进入setting.py 修改DATABASES 图片 修改project 中的initpy 文件,设置默认连接MySQL

import pymysql
pymysql.install_as_MySQLdb()

数据迁移

使用以下两个命令

python3 manage.py makemigrations  #生成迁移文件
python manage.py migrate  #执行迁移命令

设计模型类

from django.db import models

class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bpub_date = models.DateField()

设置编码时间

在setting.py修改:

LANGUAGE_CODE = 'zh-Hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间

创建管理员

python manage.py createsuperuser

注册模型类和自定义管理界面

在app下的admin.py加入下面代码 注册模型类

from django.contrib import admin
from booktest.models import BookInfo

admin.site.register(BookInfo)

自定义管理界面

class BookInfoAdmin(admin.ModelAdmin):
    list_display = ['id', 'btitle', 'bpub_date']

 admin.site.register(BookInfo, BookInfoAdmin)

也可以这样写,在自定义类上用@进行关联

@admin.register(BlogType)                                                   
 class BlogTypeAdmin(admin.ModelAdmin):                                      
     list_display = ("id","type_name")  

创建视图

定义视图处理函数 在app的views.py:

from django.http import HttpResponse

def index(request):
    return HttpResponse('<h1>index</h1>')

配置URL路由 项目的urls.py

from django.conf.urls import url
from django.contrib import admin
from django.urls import path

from app import views

urlpatterns = [
    path('admin/', admin.site.urls),
    url('index', views.index),  # index对应的URL路由
]

路由分配

各自app的urls放到各自app文件夹下,然后项目的urls.py进行配置 在app下新建urls.py

from django.conf.urls import url

from app import views

urlpatterns = [
    url('index', views.index),
]

项目的urls.py

from django.conf.urls import url
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    url('app', include('app.urls')),    # 这里分配
]

创建模板

在templates目录中新建与应用同名的文件夹 新建html文件

在views.py中修改

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    # return HttpResponse('<h1>index</h1>')  # 直接返加字符串
    return render(request, 'app/index.html')  # 返加模板

配置远程访问

修改setting.py ALLOWED_HOSTS = ['*', ]

启动服务 python manage.py runserver 10.25.58.6:8000

模型详解

图片

字段类型 图片

选项 图片

实例

生成迁移文件并执行

keyfall commented 5 years ago

配置mysql数据库日志

图片

查询函数

通过模型类.objects属性可以调用如下函数 图片

条件查询

图片

运算符 图片 图片 图片 图片 图片 图片 图片 图片 图片

keyfall commented 5 years ago

模型详解增删改操作

图片 图片 图片

keyfall commented 5 years ago

多表查询

图片 图片

keyfall commented 5 years ago

URL路由

图片

keyfall commented 5 years ago

HttpRequest对象

图片

QueryDick对象

图片

keyfall commented 5 years ago

cookie和session

图片

模板模型语言DTL

图片 图片

常用的模板过滤器

图片

keyfall commented 5 years ago

静态文件部署 1.在项目根目录下创建一个static文件夹 2.设置setting.py 图片 3.html调用 图片

keyfall commented 5 years ago

static,session,模板和数据库的配置

图片 图片

keyfall commented 5 years ago

上传文件

图片

AJAX

图片

keyfall commented 4 years ago

REST

REST就是一种设计API的模式。最常用的数据格式是JSON。 编写API有什么好处呢?由于API就是把Web App的功能全部封装了,所以,通过API操作数据,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。 此外,如果我们把前端页面看作是一种用于展示的客户端,那么API就是为客户端提供数据、操作数据的接口。这种设计可以获得极高的扩展性。例如,当用户需要在手机上购买商品时,只需要开发针对iOS和Android的两个客户端,通过客户端访问API,就可以完成通过浏览器页面提供的功能,而后端代码基本无需改动

表现层状态转移,就是页面转到另一个页面,比如首页,文章列表,某篇文章,这是3个表现层,你在首页,进入文章列表,这是客户端的状态变了,之前没有文章列表的状态,现在有了,大概就是这个意思

Rest架构的主要原则

Restful Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构). RESTful API(具有REST风格的API): 用URL定位资源,用HTTP动词(GET,HEAD,POST,PUT,PATCH,DELETE)描述操作,用响应状态码表示操作结果。

HTTP状态码

设计RESTful 让一个url能进行多个操作,只需要进行不同的HTTP动词,后台进行封装 比如对文章进行操作,删除文章,增加文章,修改文章,查看文章,这要是原来就需要进行4个url了 如果用rest思想,使用restful架构,只需要进行一个url,/article就可以了

#删除文章
DELETE /article/${acticleID}
#增加文章
POST /article/${acticleID}
#修改文章
PUT /article/${acticleID}
#查看文章
GET /article/${acticleID}

服务器无状态 由于REST架构限制,RESTful的服务器必须是无状态的,这意味着来自客户的每一个请求必须包含服务器处理该请求所需的所有信息, 服务器不能利用任何已经存储的“上下文(context,在这里表示用户的会话状态)”来处理新到来的请求,会话状态只能由客户端来保存,并且在请求时一并提供。 无状态请求易于实现负载均衡,分布式web系统下,有多个可用服务器,每个服务器都可以处理客户端请求。 如果是有状态请求,什么session,缓存都只保存在第一次请求的服务器,其他进行分布式的服务器没有保存的东西,服务器无法自由调度请求了。

HATEOAS(Hypermedia As The Engine Of Application State) 对于客户端的请求,服务器不仅返回所请求的资源,而且要返回客户端所处的状态和可转移的状态(就是超链接) 用户根据页面的内容点击进自己想看的页面,发送了请求,然后服务器返回内容,以及你到了这个页面可以进行的其他操作(状态变更了)

客户端用户授权机制OAuth 2.0

OAuth 2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据。 OAuth 就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。 令牌与密码差异:

OAuth 2.0 规定了四种获得令牌的流程。你可以选择最适合自己的那一种,向第三方应用颁发令牌。

OAuth 的四种方式