以登录功能为例css
今天仍是从总体先大体掌握django的功能,后续会详细的讲解每一块知识点html
1 # 登录功能 2 3 """ 4 咱们将html文件默认都放在templates文件夹下 5 咱们将网站所使用的静态文件默认都放在static文件夹下 6 7 静态文件 8 前端已经写好了的 可以直接调用使用的文件 9 网站写好的js文件 10 网站写好的css文件 11 网站用到的图片文件 12 第三方前端框架 13 ... 14 拿来就能够直接使用的 15 """ 16 # django默认是不会自动帮你建立static文件夹 须要你本身手动建立 17 通常状况下咱们在static文件夹内还会作进一步的划分处理 18 -static 19 --js 20 --css 21 --img 22 其余第三方文件 23 24 """ 25 在浏览器中输入url可以看到对应的资源 26 是由于后端提早开设了该资源的借口 27 若是访问不到资源 说明后端没有开设该资源的借口 28 29 http://127.0.0.1:8000/static/bootstrap-3.3.7-dist/css/bootstrap.min.css 30 """ 31 32 # 静态文件配置 33 34 """ 35 **************************************************************** 36 当你在写django项目的时候 可能会出现后端代码修改了可是前端页面没有变化的状况 37 1.你在同一个端口开了好几个django项目 38 一直在跑的实际上是第一个django项目 39 40 2.浏览器缓存的问题 41 settings 42 network 43 disable cache 勾选上 44 ***************************************************************** 45 """ 46 47 STATIC_URL = '/ooo/' # 相似于访问静态文件的令牌 48 """若是你想要访问静态文件 你就必须以static开头""" 49 """ 50 /static/bootstrap-3.3.7-dist/js/bootstrap.min.js 51 52 /static/令牌 53 取列表里面从上往下依次查找 54 bootstrap-3.3.7-dist/js/bootstrap.min.js 55 都没有才会报错 56 """ 57 # 静态文件配置 58 STATICFILES_DIRS = [ 59 os.path.join(BASE_DIR,'static'), 60 os.path.join(BASE_DIR,'static1'), 61 os.path.join(BASE_DIR,'static2'), 62 ] 63 64 # 静态文件动态解析 65 {% load static %} 66 <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> 67 <script src="{% static 'bootstrap-3.3.7-dist/js/bootstrap.min.js' %}"></script> 68 69 70 # form表单默认是get请求数据 71 http://127.0.0.1:8000/login/?username=jason&password=123 72 """ 73 form表单action参数 74 1.不写 默认朝当前所在的url提交数据 75 2.全写 指名道姓 76 3.只写后缀 /login/ 77 """ 78 79 80 # 在前期咱们使用django提交post请求的时候 须要取配置文件中注释掉一行代码 81 MIDDLEWARE = [ 82 'django.middleware.security.SecurityMiddleware', 83 'django.contrib.sessions.middleware.SessionMiddleware', 84 'django.middleware.common.CommonMiddleware', 85 # 'django.middleware.csrf.CsrfViewMiddleware', 86 'django.contrib.auth.middleware.AuthenticationMiddleware', 87 'django.contrib.messages.middleware.MessageMiddleware', 88 'django.middleware.clickjacking.XFrameOptionsMiddleware', 89 ]
1 request.method # 返回请求方式 而且是全大写的字符串形式 <class 'str'> 2 request.POST # 获取用户post请求提交的普通数据不包含文件 3 request.POST.get() # 只获取列表最后一个元素 4 request.POST.getlist() # 直接将列表取出 5 request.GET # 获取用户提交的get请求数据 6 request.GET.get() # 只获取列表最后一个元素 7 request.GET.getlist() # 直接将列表取出 8 """ 9 get请求携带的数据是有大小限制的 大概好像只有4KB左右 10 而post请求则没有限制 11 """ 12 13 def login(request): 14 # 返回一个登录界面 15 """ 16 get请求和post请求应该有不一样的处理机制 17 :param request: 请求相关的数据对象 里面有不少简易的方法 18 :return: 19 """ 20 # print(type(request.method)) # 返回请求方式 而且是全大写的字符串形式 <class 'str'> 21 # if request.method == 'GET': 22 # print('来了 老弟') 23 # return render(request,'login.html') 24 # elif request.method == 'POST': 25 # return HttpResponse("收到了 宝贝") 26 27 if request.method == 'POST': 28 return HttpResponse("收到了 宝贝") 29 return render(request, 'login.html')
1 """ 2 三个位置查找数据库相关 3 右侧上方database 4 左下方database 5 配置里面的plugins插件搜索安装 6 7 再没有卸载pycharm从新装 8 9 pycharm能够充当不少款数据库软件的客户端 10 11 参考截图和视频操做便可 12 须要提早建立好库 13 """
1 # 默认用的是sqkite3 2 DATABASES = { 3 'default': { 4 'ENGINE': 'django.db.backends.sqlite3', 5 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 6 } 7 } 8 9 # django连接MySQL 10 1.第一步配置文件中配置 11 DATABASES = { 12 'default': { 13 'ENGINE': 'django.db.backends.mysql', 14 'NAME': 'day60', 15 'USER':'root', 16 'PASSWORD':'123', 17 'HOST':'127.0.0.1', 18 'PORT':3306, 19 'CHARSET':'utf8' 20 } 21 } 22 2.代码声明 23 django默认用的是mysqldb模块连接MySQL 24 可是该模块的兼容性很差 须要手动改成用pymysql连接 25 26 你须要告诉django不要用默认的mysqldb仍是用pymysql 27 # 在项目名下的init或者任意的应用名下的init文件中书写如下代码均可以 28 import pymysql 29 pymysql.install_as_MySQLdb()
1 """ 2 ORM. 对象关系映射 3 做用:可以让一个不用sql语句的小白也可以经过python 面向对象的代码简单快捷的操做数据库 4 不足之处:封装程度过高 有时候sql语句的效率偏低 须要你本身写SQL语句 5 6 类 表 7 8 对象 记录 9 10 对象属性 记录某个字段对应的值 11 12 13 应用下面的models.py文件 14 """ 15 16 # 1 先去models.py中书写一个类 17 class User(models.Model): 18 # id int primary_key auto_increment 19 id = models.AutoField(primary_key=True) 20 # username varchar(32) 21 username = models.CharField(max_length=32) 22 # password int 23 password = models.IntegerField() 24 25 *************************# 2 数据库迁移命令************************* 26 python3 manage.py makemigrations 将操做记录记录到小本本上(migrations文件夹) 27 28 python3 manage.py migrate 将操做真正的同步到数据库中 29 # 只要你修改了models.py中跟数据库相关的代码 就必须从新执行上述的两条命令 30 ****************************************************************** 31 32 class User(models.Model): 33 # id int primary_key auto_increment 34 id = models.AutoField(primary_key=True,verbose_name='主键') 35 # username varchar(32) 36 username = models.CharField(max_length=32,verbose_name='用户名') 37 """ 38 CharField必需要指定max_length参数 不指定会直接报错 39 verbose_name该参数是全部字段都有的 就是用来对字段的解释 40 """ 41 # password int 42 password = models.IntegerField(verbose_name='密码') 43 44 45 class Author(models.Model): 46 # 因为一张表中必需要有一个主键字段 而且通常状况下都叫id字段 47 # 因此orm当你不定义主键字段的时候 orm会自动帮你建立一个名为id主键字段 48 # 也就意味着 后续咱们在建立模型表的时候若是主键字段名没有额外的叫法 那么主键字段能够省略不写 49 # username varchar(32) 50 username = models.CharField(max_length=32) 51 # password int 52 password = models.IntegerField()
1 # 字段的增长 2 1.能够在终端内直接给出默认值 3 2.该字段能够为空 4 info = models.CharField(max_length=32,verbose_name='我的简介',null=True) 5 3.直接给字段设置默认值 6 hobby = models.CharField(max_length=32,verbose_name='兴趣爱好',default='study') 7 8 # 字段的修改 9 直接修改代码而后执行数据库迁移的两条命令便可! 10 11 # 字段的删 12 直接注释对应的字段而后执行数据库迁移的两条命令便可! 13 执行完毕以后字段对应的数据也都没有了 14 15 """ 16 在操做models.py的时候必定要细心 17 千万不要注释一些字段 18 执行迁移命令以前最好先检查一下本身写的代码 19 """ 20 21 # 我的建议:当你离开你的计算机以后必定要锁屏
1 # 今天只会介绍一点点 后面会详细的介绍 2 3 # 查 4 res = models.User.objects.filter(username=username) 5 """ 6 返回值你先当作是列表套数据对象的格式 7 它也支持索引取值 切片操做 可是不支持负数索引 8 它也不推荐你使用索引的方式取值 9 user_obj = models.User.objects.filter(username=username).first() 10 """ 11 filter括号内能够携带多个参数 参数与参数之间默认是and关系 12 你能够把filter联想成where记忆 13 14 15 16 # 增 17 from app01 import models 18 res = models.User.objects.create(username=username,password=password) 19 # 返回值就是当前被建立的对象自己 20 21 # 第二种增长 22 user_obj = models.User(username=username,password=password) 23 user_obj.save() # 保存数据
1 """ 2 今日考题 3 1.什么是静态文件,django静态文件配置如何配置,如何解决接口前缀不断变化,html页面上路径的引用须要反复修改的问题 4 2.request对象的方法有哪些,分别是干什么用的,请具体阐述细节及注意事项 5 3.django自带的数据库是什么,如何换成其余数据库例如MySQL,如何配置更换 6 4.什么是django orm,如何使用django orm,数据库迁移命令如何书写 7 5.orm字段的增删改查与数据的增查如何实现 8 """
1 """ 2 在浏览器窗口输入url之因此可以访问到对应的资源是由于后端提早开设了该资源的访问接口 3 4 咱们习惯将html文件存放在templates文件夹下 5 咱们习惯将静态文件存放在static文件夹下 6 静态文件 7 网站已经写好的 活着是第三方现成的代码 直接拷贝使用 8 css文件 js文件 img文件 第三方组件 9 10 static文件夹内还会建立几个文件夹 11 css 12 js 13 img 14 第三方 15 16 django不会自动帮你建立static文件夹须要你本身手动建立 17 """ 18 STATIC_URL = '/static/' # 访问静态文件的令牌 19 20 # 静态文件配置 settings.py 21 STATICFILES_DIRS = [ # 令牌持有者能够访问的文件路径 22 os.path.join(BASE_DIR,'static'), 23 os.path.join(BASE_DIR,'static1'), 24 os.path.join(BASE_DIR,'static2'), 25 ] 26 """ 27 查找顺序就是从上往下依次查找,查找到一个就不会继续往下找了因此可能会出现替换的状况 28 """ 29 30 # 令牌动态解析 31 <link href="/static/a.txt"></link> 32 33 {% load static %} 34 <link href="{% static 'a.txt' %}"></link>
1 # 登录功能 2 3 # form表单action三个参数写法 4 5 request.method # 获取当前请求方式 全大写的字符串 6 7 request.GET # 获取url问好后面携带的参数 8 .get() 列表最后一个元素 9 .getlist() 拿整个列表 10 request.POST # 获取post请求提交过来的普通键值对(不包含文件) 11 .get() 列表最后一个元素 12 .getlist() 拿整个列表 13 """ 14 前期咱们在朝django后端提交post请求的是时候要先去配置文件中注释一行代码 15 MIDDLEWARE = [ 16 # csrf... 17 ] 18 """ 19 20 def index(request): 21 if request.method == 'POST': 22 return HttpResponse('post') 23 return HttpResponse('get')
1 # 找到pycharm database选项(三个地方查找) 2 3 # 选取对应的数据库 下载对应的驱动 4 """ 5 明明连接上了数据库 可是看不到表没法操做 6 这个时候你只须要将刚刚建立的连接删除 从新连接一次便可 7 """
1 # 1.配置文件中配置 2 DATABASES = { 3 'default': { 4 'ENGINE': 'django.db.backends.mysql', 5 'NAME': 'day60', 6 'USER':'root', 7 'PASSWORD':'admin123', 8 'HOST':'127.0.0.1', 9 'PORT':3306, 10 'CHARSET':'utf8' 11 } 12 } 13 14 # 2.init文件指定pymysql 15 import pymysql 16 pymysql.install_as_MySQLdb()
1 """ 2 orm不会帮你建立库 只能建立到表的层面 3 须要你本身提早建立好库 4 """ 5 # 对象关系映射 6 表 类 7 记录 对象 8 数据 对象属性/方法 9 """ 10 可以让一个不会sql语句的python程序员也可以简单快捷的操做数据库,极大的提高开发效率 11 """ 12 13 # 去应用下的models.py中书写模型类 14 # 类 模型类 15 # 表 模型表 16 class UserInfo(models.Model): 17 # 当你没有建立主键字段的时候orm会自动帮你建立一个名为id的主键字段 18 uid = models.AutoField(primary_key=True) 19 # uid int primary key auto_increment 20 username = models.CharField(max_length=32) 21 # username varchar(32) CharField字段必定要书写max_length参数 22 password = models.IntegerField() 23 # password int 24 **************************数据库迁移命令***************************** 25 1.python3 manage.py makemigrations 26 # 将操做记录到小本本上(migrations文件夹内) 不能真正的直接操做数据库 27 2.python3 manage.py migrate 28 # 将操做真正的同步到数据库中 29 """只要在models中书写了跟数据库相关的代码 就必需要从新执行上述两条命令""" 30 31 # pycharm简单快捷输入 32 tools 33 run manage.py task 34 自动提示 35 *******************************************************************
1 # 字段的增删改查 2 # 增 3 1.终端里面本身加默认值 4 2.null=True 5 3.default='666' 6 7 # 删 8 注释代码执行两条命令 (而后收拾行李跑路走人) 9 # 在操做models.py中的代码的时候必定要细心 10 11 # 改 12 修改代码执行两条命令 13 14 # 数据的增查 15 # 增 16 from app01 import models 17 1.create() 18 user_obj = models.UserInfo.objects.create(**kwargs) 19 # 改方法有一个返回值 就是当前建立的数据对象自己 20 2.对象.save() 21 # 先生成一个类对象 22 user_obj = models.User(**kwargs) 23 # 对象调用save方法 24 user_obj.save() 25 26 # 查 27 1.filter() # where 28 res = models.UserInfo.objects.filter(**kwargs) 29 """ 30 返回的结果是一个querySet对象 你能够把它当作是一个列表套数据对象 31 [数据对象1,数据对象2...] 32 33 支持索引和切片操做 可是不支持负数 而且不推荐你使用索引 34 35 .first()方法 36 37 filter括号内能够写多个参数 查询的时候默认是and关系 38 """
1 今日做业 2 必作题 3 1.整理今日考题,今日笔记,今日内容 4 2.熟练掌握django静态文件配置、数据库连接配置,注意事项 5 3.熟练掌握django orm大致功能 6 4.利用django在前端页面上完成注册登录功能 7 8 选作题 9 1.编写图书管管理系统(周做业) 10 提示:主要表(图书表,出版社表,做者表),尝试利用orm创建表关系 11 不会写不要紧,后面会讲