目录
- django三板斧
- 登录功能
- 静态文件
- request对象方法
- pycharm链接MySQL
- django链接MySQL
- django orm简介
- orm基本使用
- *orm数据操作
内容
django三板斧
django自带 重启功能:当识别到项目中代码有变化之后,隔段时间会 自动重启,但是有时候较慢
与浏览器打交道的视图函数都应该有 返回值
- HttpResponse:返回字符串类型的数据
- render:返回html文件,并且支持模板语法
- redirect:重定向,括号内可以写其他网站的全称,也可以自己网站的后缀
登录功能
- 开设接口返回登录界面
- 登录界面需要使用bootstrap并且还需要自己编写css和js( 静态文件)
- 页面需要获取前端用户数据并且传递给后端: form表单
- 访问登录页面:静态文件全部显示资源不存在,因为我们并没有开设静态资源访问的接口
- 开设静态资源的访问接口: settings.py
静态文件资源访问接口固定配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
View Code
配置文件中的两点疑惑
/static/是 接口前缀,表示具备访问静态文件资源的权限, 具备了权限之后会拿着接口前缀后面的文件路径去列表中每个文件夹中查找
STATICFILES_DIRS = []: 列表(用来存储多个元素的)
接口前缀动态绑定
如果templates中有很多html文件并且都需要引入静态资源,现在把接口前缀修改了,会造成页面无法加载资源
{% load static %}
"stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
编写完成后不会经常被修改的与html页面相关的文件
css文件、js文件、图片文件、第三方框架文件(bootstrap)
在django中静态文件单独开设一个文件夹存储 ,默认叫 static文件夹
在该文件夹内还可以根据功能的不同继续划分不同的文件
request对象方法
提交post请求:默认会报403
配置文件中注释一行
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',]
View Code
get请求和post请求都会触发同一个视图函数login的运行
get请求返回一个登录页面;post请求获取用户数据并校验
获取当前请求方式
request.method:返回的是纯大写的请求方法字符串
获取post请求提交的普通数据
request.POST:结果是一个QueryDict 可以看成字典处理
- request.POST.get(‘username’)
- *request.POST.getlist(‘hobby’)
get方法会拿到值列表中 最后一个元素,而不是整个列表
getlist方法会直接拿到 整个值列表
如何获取url后面携带的数据
request.GET:结果是一个QueryDict 可以看成字典处理
- request.GET.get(‘info’)
- *request.GET.getlist(‘cityList’)
特征与上述request.POST一致,使用场景也很多
pycharm链接MySQL
pycharm也可以充当很多数据库软件的客户端: database
链接数据库
- 选择数据库
-
首次链接需要下载驱动:download driver…
-
测试链接如果不通过,则需要换驱动重新下载使用
django链接MySQL
django默认自带一个sqlite3数据库,但是功能很少,仅用于本地测试
默认配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
View Code
修改配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'shun01',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '******',
}
}
View Code
指定模块
在项目同名的文件夹内的__init__.py或者应用名的文件夹内的__init__.py添加一行固定的代码
import pymysql
pymysql.install_as_MySQLdb()
View Code django orm简介
ORM: 对象关系映射
特点
能够让不会写SQL的python程序员使用python语法就可以直接操作MySQL,提升了开发效率,封装了SQL语句,有时候可能效率不高,还需要人为编写SQL调优
概念
- 表 类
- 一行行数据 类产生的一个个对象
- 数据字段 对象的一个个属性
orm基本使用
如果需要使用ORM,需要去应用下的models.py中编写代码
编写类代码
class Users(models.Model):
uid = models.AutoField(primary_key=True) # 等价于uid int primary key auto_increment
name = models.CharField(max_length=32) # 等价于name varchar(32)
pwd = models.IntegerField() # 等价于pwd int
View Code
执行数据库迁移命令
python manage.py makemigrations:记录操作
python manage.py migrate:将操作迁移到数据库
首次执行迁移命令,django还会自动创建一些默认需要使用到的表
表名的特征
app01_users:由于django支持多个应用,为了区分不同应用下可能会出现相同的表名,所以自动加上了应用的前缀,因为同一个应用下不可能出现相同的表名
扩展
- 表的主键可以不写,orm会自动帮你写一个名为id的主键
- 每次修改了跟数据库相关的python代码,都需要重新执行迁移命令
- 针对两个迁移命令,可以采用pycharm提示功能编写:tools>>>run manage.py task
orm数据操作
增
user_obj = models.Users.objects.create(name='jack', pwd='333')
print(user_obj)
print(user_obj.uid)
print(user_obj.name)
print(user_obj.pwd)
View Code
查
res = models.Users.objects.filter(name='jason')
print(res) # ]>
print(res[0]) # Users object
print(res[0].uid) # 1
print(res[0].name) # zhou
print(res[0].pwd) # 123
View Code
改
models.Users.objects.filter(uid=1).update(name='shunNB')
View Code
删
models.Users.objects.filter(uid=3).delete()
View Code
Original: https://www.cnblogs.com/zzs0626/p/16260536.html
Author: 顺溜_7
Title: django基础
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582448/
转载文章受原作者版权保护。转载请注明原作者出处!