django基础

目录

  • django三板斧

  • 登录功能

  • 静态文件

  • request对象方法

  • pycharm链接MySQL

  • django链接MySQL

  • django orm简介

  • orm基本使用

  • orm数据操作

内容

django三板斧

django自带重启功能:当识别到项目中代码有变化之后,隔段时间会自动重启,但是有时候较慢

与浏览器打交道的视图函数都应该有返回值

  1. HttpResponse:返回字符串类型的数据
  2. render:返回html文件,并且支持模板语法
  3. redirect:重定向,括号内可以写其他网站的全称,也可以自己网站的后缀

登录功能

  1. 开设接口返回登录界面
  2. 登录界面需要使用bootstrap并且还需要自己编写css和js(静态文件
  3. 页面需要获取前端用户数据并且传递给后端:form表单
  4. 访问登录页面:静态文件全部显示资源不存在,因为我们并没有开设静态资源访问的接口
  5. 开设静态资源的访问接口:settings.py

静态文件资源访问接口固定配置

STATICFILES_DIRS = [
        os.path.join(BASE_DIR, 'static')
    ]
View Code

配置文件中的两点疑惑

/static/是接口前缀,表示具备访问静态文件资源的权限, 具备了权限之后会拿着接口前缀后面的文件路径去列表中每个文件夹中查找

STATICFILES_DIRS = []:列表(用来存储多个元素的)

接口前缀动态绑定

如果templates中有很多html文件并且都需要引入静态资源,现在把接口前缀修改了,会造成页面无法加载资源

{% load static %}
  <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}">
View Code

静态文件

编写完成后不会经常被修改的与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

链接数据库

  1. 选择数据库 
  2. 首次链接需要下载驱动:download driver...
  3. 测试链接如果不通过,则需要换驱动重新下载使用

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)  # <QuerySet [<Users: Users object>]>
  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

 

posted @ 2022-05-11 23:47  顺溜_7  阅读(46)  评论(0编辑  收藏  举报