框架
框架就是可以做到将前端、后端、数据库三者给融合到一起
web应用的简介
"""Django框架是一个专门来开发web项目的框架"""
1、web应用是什么?
# web应用程序是一种可以通过web访问的应用程序,也就是说只需要一个浏览器即可,不需要其他的软件了
2、应用程序有C/S和B/S两种模式
#Django就是开发B/S的应用程序,所以,我们就认为浏览器是我们的客户端,而Django框架就是我们的服务端
3、web应用程序的优缺点:
# 优点
节省空间、不需要我们更新、只要服务器更新版本,就会影响客户端的版本,可以跨平台使用
# 缺点
"""一旦web应用的服务器出现宕机,就会直接影响到客户端的访问"""
# 什么是web框架?
框架:就是别人已经写好了的,将功能已经封装好的,我们只需要拿来用即可
纯手撸web框架
# web应用程序主要的就是B/S架构的,浏览器就是客户端,我们现在开发出一个服务端即可
# 现在可以认为框架就是客户端的服务端
"""通过socket写出来一个服务端"""
from socket import socket
sever = socket() # 默认是TCP协议,三次握手四次挥手
sever.bind(("127.0.0.1", 8000))
sever.listen(3)
while True:
sock, addr = sever.accept()
sock.send(b'HTTP/1.1 200 OK\r\n\r\n')
# 我们如何能做到输入什么路由就返回什么路由?
data = sock.recv(1024)
# 将接收到的数据进行解码
sever_data = data.decode("utf8")
# 对数据按照空格进行切分
colink = sever_data.split(" ")
# 开始判断是否为输入的数据
if colink[1] == "/login":
# 如果是则返回相同的路由
sock.send(b"login")
elif colink[1] == "/index":
sock.send(b'index')
else:
sock.send(b"hello web")
sock.close()
# 浏览器每次向后端发起请求的时候,都会多一个/favicon.ico
这个是网页的log,要在前端页面中设置
<link rel="shortcut icon" href="https://csdnimg.cn/public/favicon.ico" >
# 存在的问题:
1. socket部分我们每次都要书写(要写重复代码)
2. 我们需要自己来处理HTTP格式的数据,自己做切分,自己来取值等比较麻烦
3. 并发问题没有解决
借助于wsgiref模块
from wsgiref.simple_server import make_server
# 解决了socket的重复代码问题
# WSGIServer可以解决一定大小的并发问题,而且内部也将socket的代码封装好了
# 而代码上线后我们会使用uwsgi服务器(他可以解决更高的并发量)
def run(env, response):
"""
:param env: 客户端每次发送请求的时候,所携带的数据都在这个里面,就类似于是request
:param response: 是后端给浏览器返回的数据
:return: 返回给浏览器查看的数据
"""
print(env) # 将HTTP格式的数据都封装到了字典里面
response("200 OK", [])
# 取到我们想要的后缀内容
current_path = env['PATH_INFO']
if current_path == '/index':
return [b"index"]
elif current_path == '/login':
return [b"login"]
else:
return [b"hello web,First meeting"]
if __name__ == '__main__':
sever = make_server(host='127.0.0.1', port=8001, app=run)
"""
这句话写完就会开始实时监听127.0.0.1:8000这个地址
只要有客户端来访问这个地址,那么我服务端就能够接收到客户端的请求,就类似是我们的socket端
app=run:只要游客户端发过来请求,就会把请求交给run这个函数处理
"""
# 启动服务端
sever.serve_forever()
"""
views.py----------------->视图文件--------->主要就是写后端的逻辑的
urls.py------------------>路由文件(后缀)---------->路由与视图函数的对应关系
templates---------------->专门用来存储html文件的
"""
# 以后我们要想增加一个后缀,只需要在urls.py中写一个路由和在views.py中写一个视图函数即可.
Django框架学习
Django框架是Python中的主流框架
Python中的主流框架:
Django:
# 主要是来开发web项目的,因为功能比较全而多,所以比较笨重,小型项目一般不会使用
Flask:
# 是一个轻量级的框架,它主要是依赖于第三方模块,模块库非常非常多
tornado:
# 异步非阻塞,比较擅长解决高并发问题
Django版本问题:
1.X(老项目)、2.X(新项目)、3.X(新版本)
# 在drf中都要使用2.X版本,drf这个框架要求Django版本必须是2.X以上
# 注意事项:
1. 你的项目名称和应用名称以及其他文件的名称都要使用英文的,坚决不能够使用中文的
2. 你的计算机名称最后都使用英文的
3. 一个pycharm窗口只打开一个django项目,不能一个窗口打开很多个django项目
使用Django
1. 安装django
pip install django==1.11
# django版本要和解释器的版本要匹配:
django2.X版本------------>解释器的版本最后3.6以上
2.验证django是否安装成功
# 在cmd中输入:django-admin------>如果有输出内容就说明安装成功
3.创建项目
# 1 命令行创建
"""你可以先切换路径,切换到你想把django项目放到的路径里"""
django-admin startproject 项目名
django-admin startproject myfirst_dj
# 2 pycharm创建
File
New Project
django
...
4.启动项目
1.命令行启动:
# 1. 命令行启动
先把路径切到manage.py所在的路径
python3 manage.py runserver
"""项目启动起来之后,会监听:http://127.0.0.1:8000/"""
默认端口号是:8000
如何修改端口号:
python3 manage.py runserver 127.0.0.1 8001
2. pycharm启动
点击绿色按钮
访问项目: http://127.0.0.1:8000/
5.Next, start your first app by running python manage.py startapp [app_label].
"""创建应用"""
1.命令行创建:
python manage.py startapp [app_label].
python manage.py startapp 应用名称.
2.pycharm创建
.......
# 当你把应用创建出来之后,紧接着要做的一件事情就是:注册应用
# 在配置文件中注册应用,这个应用才生效
***********************************************************************************
将应用名称添加到配置文件INSTALLED_APPS中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 在创建Django文件的时候创建APP会自动注册应用
'app01.apps.App01Config', # 全称
# 使用命令行创建的Django项目需要自己创建APP自己注册
'APP名称',
]
命令行与pycharm创建的区别
# 1 命令行创建不会自动有templatew文件夹 需要你自己手动创建而pycharm会自动帮你创建并且还会自动在配置文件中配置对应的路径
# pycharm创建
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
]
# 命令行创建
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
]
"""
也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去配置文件中配置路径
'DIRS': [os.path.join(BASE_DIR, 'templates')]
"""
Django文件介绍
excess_jg:项目名称
app_one:应用名称
migrations:存储数据迁移记录
__init__.py:
admin:跟后台项目注册相关的
apps:跟一些注册相关的
models:跟数据库打交道的 模型层----->MTV模型
tests:测试文件
views:视图文件,写一些后端逻辑
migrations
__init__.py
settings:配置文件相关的
urls:路由相关的
wsgi:内部封装的wsgiref服务器,使用uwsgi服务器之后,这个文件就没用了uwsgi.py
db.sqlite3:Django自带的小型数据库
manage.py:Django的入口文件
Django应用
# django主要开发的就是一款web应用!
Django框架类似于是一所大学(空壳子)
应用就相当于大学里面的二级学院(具备独立的功能模块)
# 一个应用就是一个独立的模块
比如:
user、order、address、cart......等等
"应用名一定要见名知意"
Django的三板斧
"""
HttpResponse:
返回的字符串类型的数据
render:
返回的是html文件
redirect:
重定向
return redirect('https//www.baidu.com/')
return redirect('/home/')
"""
标签:web,框架,创建,py,django,Django
From: https://www.cnblogs.com/chao0308/p/17599184.html