职业中学网站建设,株洲做网站公司,网络优化的内容包括哪些,东莞专业的网站制作有哪些昨日内容回顾
web应用程序
主要是因为接下来学习的Django框架主要就是用来开发web应用的
web应用它是一款B/S架构的软件#xff0c;只需要一个浏览器作为我们的客户端#xff0c;我们自己写个服务端就行了
# 它的优点
1. 它只需要一个浏览器即可#xff0c;无需安装其他…昨日内容回顾
web应用程序
主要是因为接下来学习的Django框架主要就是用来开发web应用的
web应用它是一款B/S架构的软件只需要一个浏览器作为我们的客户端我们自己写个服务端就行了
# 它的优点
1. 它只需要一个浏览器即可无需安装其他的软件
2. 一定程度上节省了内存空间
3. 它的跨平台性(Windows、macOS、Linux等)
# 它的缺点
它的依赖性比较强依赖服务端一旦服务端出现宕机的情况客户端就会立马首影响
# 什么是框架
在别人写好的代码基础上在固定的位置去写代码.
bin
core
conf
## 面试经常问的就是框架的源码
你看过Django的哪些源码? 请举例说明。
手写web框架
目的不是让你掌握其中的代码重点在于思路的理解逻辑的理解等
## 代码就省略
根据功能的不同进行了目录的划分
views.py以后写核心的业务逻辑就在这个里面写写了一堆的函数
urls.py写后缀(路由)与视图函数的对应关系也称为是路由文件
template存放HTML文件(在Django中html文件我们称为是模板文件------模板语法)
入口文件: 书写socket部分处理HTTP格式的数据做数据的切分等操作
# 自己写的socket部分就比较麻烦
wsgiref模块
它解决的事情1. 帮我们写了socket部分我们以后就不用在写了2. 帮我们处理了HTTP格式的数据最终处理成一个大的字典env, 里面也包含了请求的各个数据3. 它能够处理一些高并发问题它的并发量不是很高上线要把wsgiref换成uwsgi服务器(并发量高)
from wsgiref.simple import make_server
def run(env, response):pass
servermake_server(host, port, apprun)
server.server_forever() # 把服务端起起来
Django框架的学习
它是Python中一个核心框架当然它也有别的框架
# 版本问题
Django1.x Django2.x Django3.x Django4.x(忽略)
# 安装
pip install django2.1.1
# 创建项目
1. 命令行django-admin startpeoject 项目名称2. pycharm创建FileNew Projectdjango。。。# 如何启动项目
1. 命令行启动
python manage.py runserver
python manage.py runserver 127.0.0.1 8001
python manage.py runserver 8002
2. pycharm启动
## 得到一个欢迎页
创建应用
应用就是一个独立的功能模块一定别忘了注册应用在配置文件中注册
命令行创建python3 manage.py startapp 应用名# 应用名要见名知意 app01 app02 app03 user order address
# 框架中至少要有一个应用
注册应用
今日内容概要
以登录功能为例从大体上来了解django的知识点后续还会详细的讲解每一部分的知识点 三板斧的使用 全局配置文件 静态文件的配置 request对象的几个方法 pycharm链接数据库MySQL Django链接数据库MySQL ORM的使用 ORM的增删改查
今日内容详细
三板斧的使用
三个方法
HttpResponse
render
redirect
def index(request):print(request)# return HttpResponse(request) # 它返回的是字符串# return render(request, index.html) # 加载HTML页面的# return redirect(http://www.baidu.com) # 加载HTML页面的return redirect(/home/) # 重定向的
全局配置文件
LANGUAGE_CODE zh-hans
TIME_ZONE Asia/Shanghai
USE_I18N True
USE_L10N True
USE_TZ False
DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: os.path.join(BASE_DIR, db.sqlite3),}
}
MIDDLEWARE [django.middleware.security.SecurityMiddleware,django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middleware.csrf.CsrfViewMiddleware, ------ 这个可以注释掉用于增加安全性的django.contrib.auth.middleware.AuthenticationMiddleware,django.contrib.messages.middleware.MessageMiddleware,django.middleware.clickjacking.XFrameOptionsMiddleware,
]
INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,app01.apps.App01Config, # 这是全写
]
静态文件的配置
静态文件: 类似于HTML文件类似于CSS文件类似于js文件图片第三方的前端框架(jQuery、bootstrap)...# 直接拿来就使用的都是静态文件的# 静态文件存在Django框架的哪个位置?
我们一般把静态文件放在框架下的static文件夹但是默认情况下没有这个文件夹因此需要我们手动创建出来这个文件夹static静态的html一般放在templaes文件夹下面
# 我们一般还会在static文件夹下进一步的划分目录
css
js
img
...
/index
/home
我们访问不到一个地址是因为在Django里面没有开设这样一个地址,Django帮你加了你只需要按照我的规则添加即可
http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css
{% %} # 一般写跟逻辑相关的
{{ }} # 跟变量相关的## 动态解析
{% load static %}
script src{% static js/jquery_3.7.1_jquery.min.js %}/script
link relstylesheet href{% static bootstrap-3.4.1-dist/css/bootstrap.min.css %}
script src{% static bootstrap-3.4.1-dist/js/bootstrap.min.js %}/script
这个配置是访问静态文件的令牌
STATIC_URL /dasdasdasdas/
其实就是static文件夹的路径
STATICFILES_DIRS [os.path.join(BASE_DIR, static),os.path.join(BASE_DIR, static1),os.path.join(BASE_DIR, static2)
]
request对象的方法
form action methodpost
action1. 不写朝当前地址提交2. 全写3. 只写后缀# post提交表单前期先把下面的代码注释掉
MIDDLEWARE [django.middleware.security.SecurityMiddleware,django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,# django.middleware.csrf.CsrfViewMiddleware,django.contrib.auth.middleware.AuthenticationMiddleware,django.contrib.messages.middleware.MessageMiddleware,django.middleware.clickjacking.XFrameOptionsMiddleware,
]
print(request.GET)
print(request.GET.get(a))
print(request.GET.get(b))
print(request.GET.get(c))
print(request.GET.getlist(c))
# print(request.POST) # 获取以post请求方式提交的表单数据
# print(request.POST.get(username)) # kevin 获取以post请求方式提交的表单数据
# print(request.POST.get(password)) # 123 获取以post请求方式提交的表单数据
get获取默认拿到的是最后一个元素值
# print(request.POST.get(hobby)) # 3 获取以post请求方式提交的表单数据
# [a, b, c]
username request.POST.get(username)
password request.POST.get(password)
print(request.POST.getlist(hobby)) # 3 获取以post请求方式提交的表单数据
request.method POST:
pycharm链接数据库
django链接数据库
配置完链接数据的代码之后Django默认启动不起来了原因是内部使用的链接模块用的是mysqldb
我们不使用这个模块我们使用pymysql模块
# 如何更换pymysql
在任意的__init__.py文件中添加一下代码
import pymysql
pymysql.install_as_MySQLdb()
# 后续还有一个模块mysqlclient这个模块不需要加任何的代码
这个模块一般装不上不容易装上很容易报错
orm介绍
orm: 对象映射模型
在Django中操作数据库就不用在写原生的SQL语句而是使用面向对象的语法和一些方法来操作数据库
缺点代码的封装程度太高导致的问题执行效率下降了目前可以忽略需要自己写原生SQL语句
类名 表名
对象 一条记录
属性 一个字段
## 我们的这些orm在哪里书写呢?
models.py这个文件就是跟数据库打交道的
## 类名写好之后一定别忘了做数据库迁移命令
***************************************************************************************
python38 manage.py makemigrations # 生成迁移的记录(类似以是一个小本本)
python38 manage.py migrate # 这句话才是真正的操作了数据库然后生成表
当你修改了跟数据量相关的代码之后都要执行这两句话
***************************************************************************************