帝国网站7.2 pc wap 跳转,邯郸推广公司,WordPress百度网盘外链,自助建站软件排行榜文章目录 一、静态文件及相关配置1.以登录功能为例2.静态文件3.资源访问4.静态文件资源访问如何解决#xff1f; 二、静态文件相关配置1. 如何配置静态文件配置#xff1f;2.接口前缀3. 接口前缀动态匹配4. form表单请求方法补充form表单要注意的点 三、request对象方法reque… 文章目录 一、静态文件及相关配置1.以登录功能为例2.静态文件3.资源访问4.静态文件资源访问如何解决 二、静态文件相关配置1. 如何配置静态文件配置2.接口前缀3. 接口前缀动态匹配4. form表单请求方法补充form表单要注意的点 三、request对象方法request请求结果代码展示 四、Django连接数据库pycharm连接MySqlDjango连接MySQL 五、Django ORM简介基本ORM操作数据的迁移关于数据库迁移失败的原因 Django ORM字段增删改查Django ORM数据增删改查 一、静态文件及相关配置
1.以登录功能为例
login.html页面
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlelink relstylesheet href../static/bootstrap-3.4.1-dist/css/bootstrap.min.cssscript src../static/bootstrap-3.4.1-dist/js/bootstrap.min.js/script
/head
bodydivdiv classcontainerdiv classrowh1 classtext-center用户登录/h1div classcol-md-8 col-md-offset-wform actionpusername:input typetext classform-control/pppassword:input typetext classform-control/pinput typesubmit classbtn btn-success btn-block value用户登录/form/div/div/div
/div2.静态文件
不经常变化的文件主要针对html文件所使用到的各种资源比如css文件、js文件、img文件、第三方框架文件
Django针对静态文件资源需要单独开一个目录统一存放在static文件夹里
static目录 该目录下类型文件居多可再分css目录js目录img目录utils目录/plugins目录/libs目录/others目录/不创3.资源访问
我们在地址栏之所以输入路由获取到相对应的资源是因为程序员提前开设了资源接口比如在网址输入127.0.0.1:8000/admin就能访问对应的接口资源
4.静态文件资源访问
直接引入css和js是不能直接使用动态效果的想要静态文件配置添加添加了bootstrap之前要添加jQuery。
默认情况下无法访问是因为没有提前开设静态文件资源的访问接口如图所示
login能请求成功是浏览器朝这个网址http://127.0.0.1:8000/login/这个后端已经开设了访问端口。
请求URLhttp://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css 是在自己的浏览器朝这个网址请求资源但是后端没有开设端口所以访问不到资源
如何解决
理论我们应该在urls填写相对应的关系但是静态文件太多了所以Django专门为静态文件开设了一个static文件资源接口
二、静态文件相关配置
1. 如何配置静态文件配置
首先在setting.py里面找到STATIC_URL ‘/static/’在下面配置static所在资源的路径 相当于把static路径添加到环境变量中去但是要注意把login.html中的…去掉
2.接口前缀
STATIC_URL /static/ # 访问静态文件资源的接口前缀(通行证)
STATICFILES_DIRS [os.path.join(BASE_DIR, static), # 存储静态文件资源的目录名称os.path.join(BASE_DIR, static1), # 存储静态文件资源的目录名称os.path.join(BASE_DIR, static2), # 存储静态文件资源的目录名称
]接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下查找 一旦找到就返回查找顺序 接口前缀接口资源文件自上而下找到就截止,接口前缀对了才有资格访问接口文件资源
要是想切换接口前缀呢
有时候就浏览器会请求临时缓存内容发送我们我们不可能一个一个去改static,太麻烦了我们直接动态获取
3. 接口前缀动态匹配
静态文件配置
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如果需要改接口前缀的话需要把上面的静态文件配置改为下面的模板语法可动态获取
django提供的模板语法{% load static %}相对于模块。
{% load static %}
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 %}/script4. form表单
action 控制数据提交的地址1.action 数据默认提交当前页面所在的地址2.actionhttps://www.baidu.com/ 完整网址3.action/index 朝当前服务端的index地址提交method 控制数据提交的方法1.get 默认2.post 可以改post methodpostform表单默认get请求 , 朝浏览器发送请求会是敏感数据要换成post请求mothedpost
请求方法补充
1.get请求 朝服务端索要数据也可以携带一些额外的要求。
携带额外数据方式URL?xxxyyyuuuzzz但是问号后面携带的数据大小是有限制的2-8kb并且不能携带敏感数据密码
2.post请求 朝服务端提交数据
携带额外数据的方式请求体请求体携带数据安全性较高并且没有大小的限制。
前期发送post请求需要注释掉配置文件中的某一行
methodpost
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,
]form表单要注意的点
1.关于请求方法
2.获取用户标签要加name属性不加name属性是填写不了
3.修改settings里面的配置
三、request对象方法
理解
request{WSGIReques} WSGIRequest: GET /login/
两层封装第一层wsi封装了大字典第二层是django封装成了方法返回给我们的是里面含有很多方法request请求结果
请求方法描述结果request.method结果是纯大写的字符串数据GET/POSTrequest.POST获取post请求体里面携带的数据request.POST.get()获取列表最后一个数值request.POST.getlist()获取整个列表数据request.GET获取网址问号后面携带的数值request.GET.get()获取列表最后的一个数值request.GET.getlist()获取整个列表数据
代码展示
代码展示
def login(request):如果get请求直接返回html页面如果是post请求那么需要获取发送过来的数据:param request::return:print(request.GET)if request.methodGET:# 1.返回html页面# print(request.method) # / GET/POSTreturn render(request,login.html)elif request.methodPOST:#2.获取post请求体里面的数据print(request.POST) # QueryDict: {kimi: [kimi], pwd: [123]}namerequest.POST.get(name) # 获取列表最后一个数据值pwdrequest.POST.get(pwd)print(name,type(name),pwd,type(pwd)) # kimi class str 123 class strname1request.POST.getlist(name)print(name1,type(name1)) # [kimi] class listreturn HttpResponse(数据我收到了)四、Django连接数据库
pycharm连接MySql
1pycharm初次连接数据库都要下载相应的驱动驱动不行就换驱动验证的话就是登录用户名端口和地址 库名验证登录就用test connection
三个位置查找数据库相关1.右侧上方database2.左下方database3.配置里面的plugins插件搜索安装
注意: 都没有再没有卸载pycharm重新装 2.登录管理员账户和密码连接你需要的数据库库要提前创建好在连接之前可以先点击Test Connection 测试连接是一次。注意在公司不能是管理员的用户登录的! 3.成功连接成功
Django连接MySQL
django自带的sqlite3是一个小型的数据库功能比较少主要是用于本地测试。实际项目都会替换它的
1.修改配置文件中的数据库设置成Django连接MySQL
django配置文件中默认的是sqlite3数据库
DATABASES {default: {ENGINE: django.db.backends.sqlite3,NAME: os.path.join(BASE_DIR, db.sqlite3),}
}django连接MySQL要修改上述配置
1.第一配置文件中配置
DATABASES {default: {# ENGINE: django.db.backends.sqlite3, # 修改成MySQL数据库# NAME: os.path.join(BASE_DIR, db.sqlite3), # 连接数据库名称 先创建好才能指定ENGINE: django.db.backends.mysql, # 修改成MySQL数据库NAME: djangodb1, # 连接数据库名称 先创建好才能指定HOST: 127.0.0.1,PORT: 3306,USER: root,PASSWORD: 123,CHARSET: utf8}
}注意左边的名字都要大写
2.手动改动将默认mysqldb改为pymysql django默认用的是mysqldb模块链接MySQL 但是该模块的兼容性不好 需要手动改为用pymysql链接需要指定模块
2.1 django1.X版本需要在项目目录下或者app目录下的__init__.py编写代码
import pymysql
pymysql.install_as_MySQLdb() 2.2 django2.X及以上都可以直接通过下载mysqlclient模块解决
pip3.8 install mysqlclient该模块windows下载问题不大 主要是mac电脑可能有问题
五、Django ORM简介
ORM对象关系映射
优点它能够让不会SQL语句的python程序员使用python面向对象的语法来操作数据库。
缺点封装程度太高有时候sql语句的效率偏低需要自己写SQL语句。
类 表
对象 一条条数据
对象点名字 数据获取字段对应的值基本ORM操作数据的迁移
1.在models.py中编写模型类
class User(models.Model)# 字段名字段类型约束条件# id int primary_key auto_incrementidmodels.AutoField(primary_keyTrue)# username varchar(32) # CharField必须要加max_length参数不加报错namemodels.CharField(max_length32)# password intagemodels.IntegerField()2.执行数据库迁移项目 打开terminal输入命令
# 数据库迁移
python38 manage.py makemigrations 将操作记录到小本本上(migrations)
# 数据库同步到数据库中
python38 manage.py migrate 将操作同步到数据库上注意每次在models.py修改了与数据库相关的代码都需要在执行上述命令关于数据库迁移失败的原因
1.一个数据库尽量只对应一个django项目 2.多个Django使用一个数据库极易容易报错
Django ORM字段增删改查
name models.CharField(max_length64)
password1 models.CharField(max_length64, nullTrue) 直接在写一个字段名就行给它一个默认值如果要删除的话直接删掉那一行字段代码就行增删改查都需要执行两句话
python38 manage.py makemigrations
python38 manage.py migrateDjango ORM数据增删改查