金科科技 做网站,今天建设银行网站无法登录,哈尔滨自助建站,宣城市建设银行网站首页一、 MySQL数据库、前端
我们之前学习了数据库、前端、Python基础等三大部分#xff0c;但是#xff0c;他们三块的内容没有串在一起#xff0c;也就没办法开发出一个完成的web项目出来#xff0c;因此#xff0c;我们通过Django框架把这三者融合在一起#xff0c;以后我…一、 MySQL数据库、前端
我们之前学习了数据库、前端、Python基础等三大部分但是他们三块的内容没有串在一起也就没办法开发出一个完成的web项目出来因此我们通过Django框架把这三者融合在一起以后我们就可以很方便的开发出各种各样的项目.二、web应用的简介
是因为Django框架是一个专门用来开发web项目的框架
1. Web应用程序是什么Web应用程序是一种可以通过Web访问的应用程序也就是说只需要一个浏览器即可不需要其他软件了
2. 应用程序有两种模式C/S、B/S。Django就是开发的B/S应用程序所以我们就认为浏览器就是我们的客户端、Django框架就是服务端
3. Web应用程序的优点1. 只需要一个浏览器即可不再需要安装其他应用软件2. 节省用户的空间资源3. 它们不需要更新是因为服务端只要一更新版本会直接影响客户端的更新4. 跨平台使用
4. Web应用程序的缺点一旦web应用的服务端宕机直接影响客户端的正常访问!!!什么是web框架框架的意思就是别人提前写好的我们只需要按照人家的要求在固定的位置写固定的代码
三、手撸web框架(推导框架的演变、代码无需掌握、重点看思路)
web应用程序主要就是B/S架构的浏览器就是客户端、我们现在开发出一个服务端出来即可
你们就可以认为框架就是客户端的服务端
通过socket写出一个服务端出来HTTP协议的相关知识
1. 四大特性基于请求和响应基于TCP协议之上的应用层协议无状态短连接
2. 请求数据格式请求首行(请求方式、协议版本号)请求头\r\n请求体
3. 响应数据格式响应首行(响应状态码)响应头\r\n响应体
4. 响应状态码1xx2xx3xx4xx5xx如何做到在浏览器地址栏中写什么后缀就返回什么内容?思路1. 在后端肯定是要知道你在浏览器输入了什么后缀2. 判断是什么后缀就返回什么内容conn.send(b)
浏览器每次朝后端发起请求的时候都会多一次/favicon.ico
link relshortcut icon hrefhttps://csdnimg.cn/public/favicon.ico 存在的问题
1. socket部分我们每次都要书写(要写重复代码)
2. 我们需要自己来处理HTTP格式的数据自己做切分自己来取值等比较麻烦
3. 并发问题没有解决如何去优化以上问题
四、 借助于wsgiref模块(内置模块直接使用)
from wsgiref.simple_server import make_server解决了socket部分不用我们写了在wsgiref模块里人家帮我们写了
它解决了并发问题 WSGIServer类------wsgiref------它能够解决的并发量不高-----本地使用wsgiref服务器---------------代码上线之后就不是有它-----------uwsgi服务器(它支持的并发量更高)它帮我们解决了什么问题
1. socket部分就不用写了帮我们封装到了底层里面
2. 帮助我们处理了纯原生的HTTP格式的数据把这些数据都封装到了大字典里了env
3. 它能够解决一定的并发问题只不过是处理的并发不是特别高def run(env, response)::param env: 客户端每次发起请求的时候所携带的数据都在这个里面就类似属于是request:param response: 是后端给浏览器返回的数据:return: 返回给浏览器查看的print(env) # 把HTTP格式的数据都封装到了大字典里去了response(200 OK, [])# 我们取到当前的后缀内容current_path env.get(PATH_INFO)# 做判断if current_path /index:return [bindex]elif current_path /login:return [blogin]else:return [b404 error]if __name__ __main__:server make_server(host127.0.0.1, port8000, apprun)这句话写完就会实时监听127.0.0.1:8000这个地址只要有客户端来访问这个地址那么我服务端就能够接收到客户端的请求, 就类似于是我们的socket端apprun只要有客户度发过去请求那么就会把处理的请求交给run这个函数来处理,run是个函数名(在django中用的就是函数名)后面你要学的flask框架这个地方写的是对象而不是函数名obj()--------------会触发类的__call__方法---------flask框架的启动代码就在__call__里面写着的是入口启动服务端server.serve_forever()
views.py-----------------视图文件---------主要就是写后端的逻辑的
urls.py------------------路由文件(后缀)----------路由与视图函数的对应关系
templates----------------专门用来存储html文件的
以后我们要想增加一个后缀只需要在urls.py中写一个路由和在views.py中写一个视图函数即可.
五、Django框架的学习
Django是Python中使用最多的一个主流框架!python中的主流框架Django:主要用来开发web项目的它比较笨重一般小型项目不怎么使用它大而全flask它是一个比较轻量级的框架它主要依赖于第三方的模块不断的安装第三方模块小而精tornado:异步非阻塞解决高并发比较擅长这个框架学起来有点难度....版本问题
1.X(老项目) 2.X(新项目) 3.X(新版本)
1.x和2.x本质上差别不是很大但是也有区别我们讲1.x附带讲2.x的区别
在drf中都要使用2.x以上版本drf这个框架要求django的版本必须是2.x以上注意事项
1. 你的项目名称和应用名称以及其他文件的名称都要使用英文的坚决不能够使用中文的
2. 你的计算机名称最好都使用英文的
3. 一个pycharm窗口只打开一个django项目不能够一个窗口打开很多个django项目如何使用Django
1. 安装django
pip install django1.11
django版本要和解释器的版本要匹配
django2.X版本------------解释器的版本最后3.6以上如何验证django是否安装成功
在cmd中输入django-admin------如果有输出内容就说明安装成功2. 创建项目1 命令行创建你可以先切换路径切换到你想把django项目放到的路径里django-admin startproject 项目名django-admin startproject myfirst_dj2 pycharm创建FileNew Projectdjango...
3. 如何启动项目1. 命令行启动先把路径切到manage.py所在的路径python3 manage.py runserver 项目启动起来之后会监听http://127.0.0.1:8000/默认端口号是8000如何修改端口号python3 manage.py runserver 127.0.0.1 80012. pycharm启动点击绿色按钮访问项目 http://127.0.0.1:8000/4. Next, start your first app by running python manage.py startapp [app_label].
创建应用如何创建应用1. 命令行创建python manage.py startapp [app_label].python manage.py startapp app01.2. pycharm创建当你把应用创建出来之后紧接着要做的一件事情就是注册应用
在配置文件中注册应用这个应用才生效
****************************************************************************************
INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,app01.apps.App01Config, # 全称app01, # 简称
]
****************************************************************************************以后我们在哪里写代码呢?六、主要文件介绍
myfirst_dj # 项目名称app01 # 应用名称migrations # 这个是用来存储数据库迁移记录__init__.pyadmin.py # 跟后台项目注册等相关的apps.py # 跟一些注册相关models.py # 跟数据库打交道的 模型层-----MTV模型tests.py # 测试文件views.py # 视图文件写一些后端逻辑
myfirst_dj__init__.pysettings.py # 配置文件相关的urls.py # 路由相关的wsgi.py # 内部封装的wsgiref服务器,uwsgi服务器之后这个文件就没用了uwsgi.pydb.sqlite3 # Django自带的小型数据库
manage.py # Django框架的入口文件七、应用
django主要开发的就是一款web应用!
Django框架类似于是一所大学(空壳子)应用就是大学里面的二级学院(具备独立的功能模块)
一个应用就是一个独立的功能模块
比如userorderaddresscart...
应用名一定要见名知意但是我们教学为了方便我都使用app01、02、03...
八、小白必会三板斧
The view app01.views.index didnt return an HttpResponse object. It returned None instead.
return HttpResponse(OK) # 返回字符串的
return render(request, index.html) # 返回html文件的
return redirect(http://www.baidu.com) # 重定向###############################自己创建的templates文件夹要在配置文件注册################
TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates)],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文件夹要在配置文件注册################