Django静态文件配置 request对象 Django操作MySQL

Django中的文件介绍

Django静态文件配置 request对象 Django操作MySQL

render、HttpResponse和redirect

当我们想起手写一个项目,创建好应用并且注册之后,在urls.py文件先导入app文件夹下migrations下的views.py文件

from app01 import views

在urls.py下urlpatterns添加路由与视图函数的对应关系

url(r‘^bilibili/‘, views.bilibili),
    url(r‘login‘, views.login),
    url(r‘^index/‘, views.index),
    url(r‘^home/‘, views.home_page)

这样我们就可以在views视图里面写视图函数了,Django在views.py文件里预先导入了render模块

render

render返回的是一个HTML文件,render方法需要传两个参数request和templates_name

def login(request):
    return render(request, ‘login.html‘)

HttpResponse

render返回的是字符串

def index(request):
    return HttpResponse(‘HELLO DJANGO!‘)

redirect

redirect 重定向,输入网址会跳转到该网址,既可以写其他网址,也可以写我们自己创建的html页面。

def bilibili(request):
    return redirect(‘https://www.bilibili.com‘)
def index(request):
  return redirect(‘/login/‘)
# 写自己创建的只需要写后缀就可以了

需要注意的是所有视图函数都需要传request参数,request表示的是请求相关的所有数据对象。

静态文件配置

静态文件通常是指不是由服务器生成的文件,例如脚本,CSS文件,图像等,但是必须在请求时发送给浏览器。

我们通常将HTML文件默认都放在templates文件夹下,将网站所需要的静态文件默认都放在static文件夹下。django默认不会自动创建static文件夹,需要手动创建。

需要在settings.py文件末尾将静态文件接口开放

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, ‘static‘)
]
# 需手动配置

在HTML引入静态文件的两种方式:

{% load static %}
    <link rel="stylesheet" href="{% static "bootstrap-5.1.0-dist/css/bootstrap.min.css" %}">
# 这种方式可以动态解析令牌,无论后面怎么改都可以访问

或者:

<link rel="stylesheet" href="/script/css/bootstrap.min.css">

注意:

STATIC_URL = ‘/static/‘

这里的‘/static/‘表示的是类似于访问静态文件的令牌,如果想要访问静态文件就必须以static开头,当令牌匹配之后才回去STATICFILES_DIRS

列表里从上往下依次查找。都找不到就会报错。

request对象

####### settings.py中 前期先把第四行注释掉,不验证csrf #####

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‘,
]

request.method

request.method会返回请求方式,并且是全大写的字符串形式。

# 那么我们就可以通过请求方式做逻辑处理
def login():
  if request.method == ‘POST‘:
    return HttpResponse(‘get it‘)
  # return 只会执行一个return
  return render(request, ‘login.html‘)

request.POST

request.POST接收post请求数据,会返回一个类似于字典一样的数据,这时候我们可以通过get方法取到里面的值。

# POST方法返回的值 <QueryDict: {‘username‘: [‘egon‘], ‘password‘: [‘123‘]}> <class ‘django.http.request.QueryDict‘>
def login():
  if request.method == ‘POST‘:
    username = request.POST.get(‘username‘)
    password = request.POST.get(‘password‘)
    # 这里的键是在前端HTML文件中写好的

需要注意的是get方法取到的value是字符串,并不是看起来像列表的东西,而且get方法只能取到中括号里面最后一个值,想取到所有的值应该用getlist方法,取到的就是列表了。

Django连接MySQL

在settings.py文件里面找到DATABASES配置

# 默认是django自带的sqllite3小型数据库
DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
        ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
    }
}

这时候我们连接到MySQL第一步需要更改它的配置

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
        ‘NAME‘: database01,  # name对应的是库的名字
      ‘USER‘:‘root‘
      ‘PASSWORD‘:‘123‘
     	‘HOST‘:‘127.0.0.1‘
      ‘PORT‘:3306,
      ‘CHARSET‘:‘utf8‘
    }
}
# 第一步之后,如果启动django是会报错的,
# 这是因为django默认用的是mysqldb模块连接MySQL但是该模块兼容性不好
# 需要手动改为pymsql模块进行连接

第二步需要进行代码声明

# 在项目名下的init或者任意的应用名下的init文件中书写以下代码都可以
import pymysql
pymysql.install_as_MySQLdb()

Django ORM

Django 模型使用自带的 ORM。

对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。

ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。

ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。

ORM本质上还是执行的SQL语句。

Django静态文件配置 request对象 Django操作MySQL

创建 MySQL 数据库( ORM 无法操作到数据库级别,只能操作到数据表)语法。

创建表(创建类)

# 1.先去model.py中书写一个类
class User(models.Model):
    # id int primary_key auto_increment
    id = models.AutoField(primary_key=True)
    # username varchar(32)
    username = models.CharField(max_length=32)
    # password = int
    password = models.IntegerField()
# 2.数据库迁移命令(每次改变了跟数据相关的代码)

python3 manage.py makemigrations # 生成迁移记录,不操作数据库

python3 manage.py migrate  # 将操作真正的同步到数据库

由于一张表中必须要有一个主键字段 并且一般情况下都叫id字段,所以当我们不定义主键字段的时候,ORM会自动创建一个名为id的主键字段。

Charfield必须要指定max_length参数,不指定会报错

verbose_name该参数是所有字段都有的,就是用来对该字段的解释说明,类似于注释

字段的增删改查

字段的增加

1、可以在终端内直接给出默认值
2、设置该字段为空
null=True
3、给出该字段的默认值
default=‘male‘

字段的修改

直接修改代码然后执行数据库迁移的命令,相当于把之前的表覆盖。

字段的删除

对应的字段直接注释掉,再执行数据库迁移的命令。需要注意的是执行完毕之后字段对应的数据也没有了

Django静态文件配置 request对象 Django操作MySQL

上一篇:Oracle-FRA(闪回恢复区)


下一篇:[SQL]master..sysprocesses