框架
框架就是可以做到将前端、后端、数据库三者给融合到一起
web应用的简介
"""Django框架是一个专门来开发web项目的框架"""
1、web应用是什么?
2、应用程序有C/S和B/S两种模式
3、web应用程序的优缺点:
节省空间、不需要我们更新、只要服务器更新版本,就会影响客户端的版本,可以跨平台使用
"""一旦web应用的服务器出现宕机,就会直接影响到客户端的访问"""
框架:就是别人已经写好了的,将功能已经封装好的,我们只需要拿来用即可
纯手撸web框架
"""通过socket写出来一个服务端"""
from socket import socket
sever = socket()
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()
这个是网页的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
def run(env, response):
"""
:param env: 客户端每次发送请求的时候,所携带的数据都在这个里面,就类似于是request
:param response: 是后端给浏览器返回的数据
:return: 返回给浏览器查看的数据
"""
print(env)
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文件的
"""
Django框架学习
Django框架是Python中的主流框架
Python中的主流框架:
Django:
Flask:
tornado:
Django版本问题:
1.X(老项目)、2.X(新项目)、3.X(新版本)
1. 你的项目名称和应用名称以及其他文件的名称都要使用英文的,坚决不能够使用中文的
2. 你的计算机名称最后都使用英文的
3. 一个pycharm窗口只打开一个django项目,不能一个窗口打开很多个django项目
使用Django
1. 安装django
pip install django==1.11
django2.X版本------------>解释器的版本最后3.6以上
2.验证django是否安装成功
3.创建项目
"""你可以先切换路径,切换到你想把django项目放到的路径里"""
django-admin startproject 项目名
django-admin startproject myfirst_dj
File
New Project
django
...
4.启动项目
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',
'app01.apps.App01Config',
'APP名称',
]
命令行与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框架类似于是一所大学(空壳子)
应用就相当于大学里面的二级学院(具备独立的功能模块)
比如:
user、order、address、cart......等等
"应用名一定要见名知意"
Django的三板斧
"""
HttpResponse:
返回的字符串类型的数据
render:
返回的是html文件
redirect:
重定向
return redirect('https//www.baidu.com/')
return redirect('/home/')
"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY