Django框架学习—初级入门

一、 API接口设计:

目前流行的是 REST API风格接口 需要设计具体的API请求和响应消息的具体内容。

**

二、 Http协议

**
前端与后端的交互通过http协议进行通信,必须了解http协议的基础知识。
http 版本 0.9 1.0 1.1 2 3 最广泛的使用1.1
http协议的最大特点就是 通信双方分为客户端和服务端
状态码:
2xx 表示请求消息没有问题,而且服务器也正确处理了
3xx 表示重定向相应,301,302,表示客户端的这个请求的url地址已经改变了,需要客户端重新发起一个请求到另外一个url
4xx 表示客户端请求错误
400 表示客户端请求不符合接口要求,如格式完全错误
401 表示客户端需要先认证才能发送次请求
403 表示客户端没有权限要求服务器处理这样的请求
404 表示客户端请求的url不存在
5xx 服务端在处理请求中,发生了未知的错误,通常是服务端的代码设计问题,或者服务端子系统出了故障(数据库宕机)

三、 Django学习

  1. 创建项目目录
 django-admin startproject bysms

wsgi web服务网关接口:遵循wsgi规范的web后端系统,可以理解为由两部分组成,运行在一个python进程中的两个模块,或者两个子系统
wsgi web server:接受前端的http请求,调用web application 的接口方法。
wsgi web application 具体处理请求,再把结果返回给wen server,web server再返回给前端。

两个侧重点不同:
web server 负责提供高效的http请求处理环境,可以使用多线程、多进程或轻量级线程的机制。
web application 负责处理业务逻辑,业务逻辑的处理非常复杂,需要精心的设计来正确处理。
django开标只提供一个可供调试的单线程web server,后期产品上线需要高效的webserver产品,如gunicorn、uwsgi、cherrypy等,结合django自称一个高效的后端服务。

  1. 运行django服务
 python manage.py runserver 0.0.0.0:80
  1. 创建项目app

3.1 django中的一个app就是项目里面的一个应用的意思,一个项目可以包含多个多个app,一个app通常就是一个相对独立的模块,实现相对独立的功能。
如,管理员设计在mgr模块中,销售员设计在sales模块中。
创建项目app:

python manage.py startapp sales

3.2 返回页面内容给浏览器
view.py 通常是写处理http请求代码的

3.3 url路由
所谓url路由就是指,根据http请求的url路径,设置由 哪个函数来处理这个请求
urls.py处理http的路由,进行设置访问

from django.contrib import admin from django.urls import path 
 别忘了导入 listorders 函数 
from sales.views import listorders 
urlpatterns = [ 
path('admin/', admin.site.urls), 
#添加如下的路由记录 
path('sales/orders/', listorders), 
]
  1. 创建数据库和表
    广泛使用的数据库有 mysql、postgresql

4.1 数据库的配置在
bysms/settings.py 中的DATABASES中

4.2 创建数据库

  python manage.py migrate

4.3 ORM 通过对象操作数据库的方法被称为ORM
在models.py中定义数据库的表
4.4 配置数据库表
settings.py 中的INSTALLED_APPS中添加

  'common.apps.CommonConfig',

4.5修改库表的定义需要每次都执行

  python manage.py makemigrations common
  python manage.py migrate

4.6 django提供一个管理员届满可以方面的添加修改删除定义的model表数据。
创建一个超级管理员账号,

 python manage.py createsuperuser
 用户名
 邮箱
 passwd

修改应用里面的管理员配置文件,common/admin.py

 from django.contrib import admin

 from .models import Custoer
 admin.site.register

admin界面配置中文语言
在settings.py 中的MIDDLEWARE
添加

 'django.middleware.locale.LocaleMiddleware',

4.7 读取数据库数据

django中队数据库表的操作,应该都通过Model对象实现对数据的读写,而不是通过SQL语句

from common.models import Customer

qs = Customer.objects.values()

添加过滤条件:

ph = request.GET.get('phpnenumber',None)
qs = qs.filter(phonenumber = ph,adress = '江苏浙江')
  1. 前后端分离架构

5.1 代码直接生成HTML
5.2 使用模版(模版引擎,专门处理HTML模版的库)
java中的JSP
python中的jinja2,Mako,Django也内置了一个这样的模版引擎
5.3 直接将html内容生成的任务放到前端,服务端只负责提供数据,界面的构成全部在前端进行,称之为前端渲染。
这个工作在前端执行,使用前端的框架库区完成,比如Angular,React、Vue
这样定义好前后端交互数据的接口,前后端就分离了。
注意:Django返回的信息,同城都是所谓的动态数据信息,存放在数据库中的。而静态信息如,html文档、css文档,图片、视频是不应该由
Django负责返回数据的,应该有静态资源服务软件,如Nginx、Varnish等等,返回给前端,这些软件都会有效的对静态数据进行缓存,大大提高
服务效率。在实际项目中,往往还会直接使用静态文件云服务(OSS + CDN)提供静态数据的访问。

  1. 临时取消CSRF校验

缺省创建的项目,Django会启用一个CSRF(跨站请求伪造安全防护机制)调试阶段临时取消改校验,

在settings.py中的middleware中将
'django.middleware.csrf.CsrfViewMiddleware'
注释掉即可。

7.测试后端代码:

import requests,pprint

response = requests.get(url)
pprint.pprint(response.json())

8.和前端集成(调试开发模式)

将前端系统系统打包,形成一个目录 z_dist
在bysms、urls.py文件末尾添加
+static(“/”,document_root=‘./z_dist’)
并添加如下声明:

from django.conf.urls.static import static

你可能感兴趣的:(Python,django,python,后端)