三板斧以及各种方式连接mysql
目录
框架基础二
1.django必会三板斧
1.HttpResponse
针对与浏览器交互返回字符串
2.render
针对与浏览器交互返回html文件
3.redirect
针对与重定向(跳转其他网页),括号内可以填写其他网站的全程,也可以写自定义网站的后缀名
# 添加功能找到urls.py配置一个路径
2.登录功能
1.对于输入不同的后缀访问不同的内容
在urls.py配置一个输入的后缀然后再views.py写入
2.view.py文件内
def login(request):
return render(request,'test.html')
3.test.html内
<div class="container">
<div class="row">
<h1 class="text-center">登录页面</h1>
<div class="col-md-6 col-md-offset-3">
<form action="" method="post">
<p>username:
<input type="text" class="form-control" name="username"></p>
<p>password:
<input type="text" class="form-control" name="password"></p>
<p>hobby:
<input type="checkbox" name="hobby" value="111">篮球
<input type="checkbox" name="hobby" value="222">足球
<input type="checkbox" name="hobby" value="333">网球
</p>
<input type="submit" value="登录" class="btn btn-success btn-block">
</form>
</div>
</div>
</div>
3.静态文件
1.开设静态资源的访问接口
理论上应该自己去路由层开设接口资源 但是由于静态文件资源使用频率很高
只要是一个web项目都肯定需要 所以django为了避免开发者繁琐 提供了静态资源的配置文件 只需要填写固定的配置即可开设资源接口
settings.py
2.静态文件资源访问接口固定配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
3.html页面路径 /static/mycss.css
4..配置文件中的两点疑惑
STATIC_URL = '/static/' # 作用是什么
STATICFILES_DIRS = [] # 为什么是列表(用来存储多个元素的)
"""
以该地址为例:/static/bootstrap-3.3.7-dist/css/bootstrap.min.css
/static/是接口前缀 表示具备访问静态文件资源的权限
具备了权限之后会拿着接口前缀后面的文件路径去列表中每个文件夹中查找
bootstrap-3.3.7-dist/css/bootstrap.min.css
找到一个就结束
比如 static和static1里面都有a.txt 那么只会拿到static中的
"""
5.接口前缀动态绑定
如果templates中有很多html文件并且都需要引入静态资源
现在把接口前缀修改了 那么会造成什么结果???>>>:页面无法加载资源
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
6.静态文件
css文件,js文件,图片文件,第三方框架文件(bootstrap)
静态文件,单独开设墨守成规的名为static文件夹
接着下面可以开始不同的文件
css文件夹,js文件夹...
4.request对象方法
1.对于低版本下载的django框架
在提交post请求后会报错
在配置文件将MIDDLEWARE中注释掉
'django.middleware.csrf.CsrfViewMiddleware'
2.针对于get请求和post请求要让它请求不同做出不同的动作
get请求返回一个登录页面
post请求获取用户的数据并用数据库校验
3.获取浏览器到底发出的什么请求
request.methed #获取到的是请求方式的大写字符串
4.常见操作
if request.methed == 'POST':
return HttpResponse('xxx')
return render(request,'login.html')
5.获取POST请求提交的普通数据
request.POST # 获取到的是一个字典{}
接下来的就是字典取值
request.POST.get('username') # 默认获取的是字典套列表的最后一个值
request.POST.getlist('hobby') # 获取列表
6.获取url后面携带的数据
request.GET # 获取也是一个字典
request.GET.get('xxx') # 获取也是列表最后一个
request.GET.getlist('xxx') #获取的是整个列表
5.pycharm来连接mysql
"""其实pycharm也可以充当很多数据库软件的客户端"""
1.pycharm右上方侧边 database
2.pycharm左下方边角 database
3.上述两个地方都没有 需要下载插件 或者直接重装一个正常的pycharm
settings
plugins
搜索database下载apple即可
# 链接数据库
1.选择数据库
2.首次链接需要下载驱动
download driver...
3.测试链接如果不通过 则需要换驱动重新下载使用
Driver:MySQL MySQL for 5.1
6.django连接mysql
1.在srttings内配置mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'jp_05',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 'jason123',
}
}
2.对于低版本django会报错
在__init__.py添加一行固定代码
import pymysql
pymysql.install_as_MySQLdb()
7.django之orm简介
1.orm 获取数据的方式 ===>对象映射关系
好处:提升开发效率
坏处:封装了SQL语句效率低,需要人为优化
2.映射方式
表 映射==>python中的类
记录 映射==>python中的类产生的对象
数据字段 映射===>python中的对象属性
8.orm基本使用
1.使用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 char(32)
pwd=models.IntegerField() # pwd int
2.执行数据库迁移记录
python3 manage.py makemigrations #记录将要操作数据库的记录
python3 manage.py migrate #将操作转换为对应的sql语句并执行
'''对于首次执行命令django会自动创建一些默认需要用到的表'''
3.创建的表的特征
由于django应用是多个的的为了以后便于与不同的app下的表名做区分,所以在那个app下创建的就会将app名作为表名的前缀
4.优势
可以不写主键orm会自动添加
每次修改了跟数据库相关的python代码,都需要重新执行两行迁移命令
执行命令的偷懒方式
tools run manage.py
内部输入代码会有提示
9.数据库操作
1.增
obj_user=models.Users.objects.create(name='lilong',pwd='123') # 操作之后返回的是一个对象
2.删
obj_user=models.Users.objects.filter(uid=1).delete()
3.改
obj_user=models.Users.objects.filter(uid=1).update(name='hhh')
4.查
obj_user=models.Users.objects.filter(name=username) # 查到之后返回的是一个对象
浙公网安备 33010602011771号