Http协议是超文本传输语言
请求方式get 获取服务端数据
post 向服务端提交数据
put 向服务端上传数据
delete 删除服务端的资源
状态码 状态码英文标示 意义
200 OK 请求成功 查询成功
201 修改和添加 成功
204 删除成功
301 Moved Permanently 客户端请求的资源已被永久移动到新的URL 重并项
302 Found 客户端的资源被临时移动用于三方登陆之后的跳转
304 Not Modified 请求的资源未被修改,可以继续访问原URL常用于使用缓存的情况下
400 Bad Request 客户端语法错误
401 Unauthorized 请求需要经过身份验证
402 Payment Required 保留状态码,为以后使用做准备
403 Not Found 客户端直接拒绝客户端的请求
404 Method Not Allowed 客户端请求的资源找不到
500 Internal Server Error 服务端内部错误
502 Bad Geteway 服务端内部错误,服务端错误的网关
503 Serbice Unavailable 服务端无法响应客户端的请求
Django主要采用MVT模式
MVT
M-model:模型,操作数据库功能部分
V-view:视图,处理业务逻辑
T-Template:模版,操作页面
M-model:模型,和MVT中的M是一样的
V-view:视图,和MVT的T是一样的
C-Controller:控制器,用来进行数据的逻辑操作
Django框架安装:pip install django==2.2.2
Django项目创建:django-admin startproject 项目名
启动项目:python manage.py runserver
Django是一个开放源代码的Web应用框架,由纯Python写成
Django的特点Django适合与内容有关的项目,常见的就是后台管理
子应用创建python manage.py startapp 应用名
注意:文件夹名最好用字母或数字不能有特殊字符
模版配置把html页面存到哪里就需要打开settings.py文件
project.settings.py
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’,
],
},
},
]
有了这个文件夹的配置之后,接下来在项目根目录下创建与配置同名的文件夹template/
并在其中书写一个简单的html*,并命名为index.html
今天这个天气是晴天
# 视图渲染 在views.py中引入一个新的方法render这个方法专门用来返回一个html页面 #app.views.py from django.shortcuts import renderdef index(request):
return render(request, ‘index.html’)
模版变量类似:{{ var }}
修改一下刚才的index.html页面
今天这个天气是{{ weather }}
在页面中模版变量叫:weather,在视图函数代码中,就需要有一个**映射格式数据**他的key值对应html页面中的模版变量,value是这个模版变量渲染的结果 app.views.py from django.shortcuts import renderdef index(request):
content = {‘weather’: ‘晴天’}
return render(request, ‘index.html’, content)
还可以直接用locals方法,将当前函数作用域下的变量及值组合为字典
app.views.py
from django.shortcuts import render
def index(request):
weather = ‘晴天’
return render(request,‘index.html’,locals())
render可以用来返回一个模版页面并将一个字典组合成的模版变量传递到模版页面上,完成页面的渲染
render(request, template_name, context=None)
‘’’
request: 固定接收 request 请求,与视图 han s 第一个参数相同
template_name: 为一个可以找到的模板页面,填写配置 template 的相对路径即可
context: 模板页面所需模板变量,是一个字典格式,key 为模版变量,value 为渲染的值
‘’’
固定格式:{% for 变量 in 循环对象 %}
{{变量}}
{% endfor %}
注意:模版语言中,不会出现索引超出范围的IndexError或者Key值不存在的KeyError,取不出任何东西则只是一个空
{% if %}用来判断
{% if test_list %}
列表不为空
{% elif test_dict %}
列表为空,字典不为空
{% else %}
列表字典均为空
{% endif %}
静态资源可以引入css、img、js等,来装饰我们的页面
静态资源路径配置在settings中配置静态文件目录路径
STATICFILES_DIRS = (
os.path.join(BASE_DIR, ‘static’),
)
STATICFILES_DIRS 该配置项用来告诉 django 在查找静态资源时,应该访问哪个目录
在和settings的文件夹同级下创建static文件夹并保存到里面一张图片
有了图片就可以直接引入并使用
{% load staticfiles %}注意:需要使用静态标签***{% static %}前使用{% load staticfiles %}***标签进行静态资源路径的加载
ORM映射 ORM映射概念ORM映射关系是django与数据库之间的一个桥梁,可以使开发者不再关注如何去编写SQL语句直接一套ORM所提供的API借口即可方便对各种怪数据库进行交互
模型类编写通过ORM映射在models.py种创建模型类
myapp/models.py
from django.db import models
Create your models here.
class Weather(models.Model):
weather = models.CharField(max_length=100,verbose_name=“天气”)
class Meta: # 定义元类
verbose_name_plural = “天气” # 可以控制模型类的属性 在后台管理站点中看到的效果
# 设置当前表名的一个可读的性更好的名字
def str(self): # 控制后台管理站点中添加对象的名字
return self.weather # 将天气2个字返回 效果都是在后台管理中站点看到的
CharField为字符串 max_length 最大长度 verbose_name 后台管理的字段名
IntegeField 整型
要记得在settings文件中进行配置
#myproject/settings.py
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘myapp’,
]
python manage.py makemigrations 创建数据库迁移文件
执行迁移python manage.py migrate 根据数据库迁移文件生成对应SQL语句并执行
报错sql = self.db.ops.last_executed_query(self.cursor, sql, params)
File “C:Users马家伟AppDataLocalProgramsPythonPython37libsite-packagesdjangodbbackendsmysqloperations.p
y”, line 146, in last_executed_query
query = query.decode(errors=‘replace’)
AttributeError: ‘str’ object has no attribute ‘decode’
解决方案:这个是因为operatins.py文件中的decode不对打开那个文件改成encode就ok了



