是超文本传输协议,也就是链接。端口号是80。http协议是义客户端与服务端的相应为标准的
方式 | 含义 |
---|---|
get | 获取服务端的数据 |
post | 向服务端提交数据,创建数据 |
put | 向服务端上传数据,更新数据 |
delete | 删除服务端资源 |
状态码 | 含义 |
---|---|
200 | 代码正常运行,没有问题 |
301 | 资源被转移到永久的新的url里 |
302 | 资源被转移到暂时的新的url里 |
400 | 客户端语法请求,或无法解析请求 |
404 | 客户端请求的资源找不到了 |
500 | 服务端内部错误 |
502 | 服务端网关错误 |
以”4“开头的,是客户端的错误,以”5“开头的,是服务端的错误
静态网站:把数据写死在网页里,不能进行修改
动态网站:可以进行页面与页面之间的数据的传递
有两种模式,MVT和MVC。Django框架用的是MVT模式
MVT模式
M(Model):负责和数据库交互,进行数据处理
V(View):接收Request,进行业务处理,返回Response
T(Template):负责模板页面数据渲染
MVC模式
M(Model):主要封装对数据库层的访问,进行增删改查操作
V(View):用于封装结果,生成页面展示的HTML内容
C(Centroller):用于接收请求,处理业务逻辑,返回结果
Django是一个开放源代码的Web 应用框架*,由纯Python写成,是目前 Python 语言中主流 de 三大Web框架之一(flask、django、tornado),是最容易上手的框架
创建
django-admin startproject 项目名
展示
pip list
启动项目
python manage.py runserver
创建好一款Django项目之后,它已经是具备了一些基本的文件及文件夹
是什么:专门做某件事的网络应用程序
意义:一个网站使用的配置和应用的集合
python manage.py startapp 应用名
在app目录下的views.py文件下写
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello world
")
在views.py中我们通过编写函数的形式,接收用户请求的request并返回一个response,这个response通过HttpResponse方法进行返回,这个方法很简单,返回的就是一个html字符串
在urls.py文件下方写,编写路由映射
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls), #admin 控制界面路由
path('',views.index)
]
在settings.py文件下找到TEMPLATES,修改DIRS属性
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',
],
},
},
]
在根目录下创建templates文件夹,并且在文件夹里创建index.html文件。在index.html文件下创建模板
hi
真不错
今天这个天气是晴天
在views.py文件里定义函数写返回的html的内容
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
在views.py文件里简单定义变量,再把值返回给index.html文件里例如像:
views.py里定义再返回
from django.shortcuts import render
def index(request):
money : 100
return render(request, 'index.html',money)
index.html接收
我兜里有{{money}}元
某小组各个成员的分数为:
{% for score in scores %}
{{ score }}, #循环列表
{% endfor %}
游戏角色信息:
{% for key,value in game.items %}
{{ key }}:{{ value }} #循环字典
{% endfor %}
{% if money > 200 %}
你真是个有钱人
{% else %}
你好像有点穷
{% endif %}
用来装饰页面
在根目录下创建static文件夹,并在settings.py文件里找到STATIC_URL,在它的下边配置路径
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]
# STATICFILES_DIRS 该配置项用来告诉 django 在查找静态资源时,应该访问哪个目录
有图片,直接在模板里引用,在index.html里修改
{% load staticfiles %}
hi
{{ message }}
ORM映射是Django与数据库之间的桥梁,可以代替sql语句,用过 ORM和APL的接口就可以进行与数据库之间的数据交互
在app文件夹下的models.py文件里编写数据模型类
from django.db import models
# Create your models here.
class Game(models.Model):
# CharField 字符串 max_length 最大长度 verbose_name 后台管理字段名
name = models.CharField(max_length=20, verbose_name='角色名')
# IntegerField 整型
atk = models.IntegerField(verbose_name='攻击力')
level = models.IntegerField(verbose_name='等级')
在settings.py文件下,找到INSTALLED_APPS 进行配置
INSTALLED_APPS= [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', #配置
]
数据类型
CharField 字符串
IntegerField 整型
Max_length 最大长度
在settings.py文件下找到DATABASES与数据库进行连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123123',
'NAME': 'twoday'
}
}
在终端里运行该命令
python manage.py makemigrations # 创建数据库迁移文件
python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行
用来管理数据的界面,在主路由文件夹下,有admin的路由设置path(‘admin/’, admin.site.urls)
我们进入admin界面时需要账号密码登录所以我们要创建超级用户和密码(在终端运行)
python manage.py createsuperuser #创建超级用户
进入之后,admin界面会有默认的两张表(用户表和组表)
在视图中进行数据库操作,获取数据库中的数据来渲染到页面上,修改之前所编写的视图,并使用ORM的数据库操作获取数据
在myapp文件夹下的views.py文件里写
from myapp.models import Game
def MyView(request):
# 3.MVT三层联动
# 通过Game模型类,取出数据块中的数据(ORM映射)
game_data = Game.objects.all() #取出所有数据
content = { #以字典的格式传递页面数据
'games' : game_data
}
# render返回一个模板页面
return render(request,'index2.html',content)
在templates文件夹下新建index2.html文件,并写内容
Title
展示数据库中的角色信息
#创建表格
编号
角色名
攻击力
等级
{% for game in games %} #循环获取数据
{{ game.id }} #渲染数据
{{ game.name }}
{{ game.atk }}
{{ game.level }}
{% endfor %}