Django笔记

数据库

数据库服务器的运行

管理员 模式 打开 终端 运行

# 启动服务器
net start mysql
# 停止服务器
net stop mysql

数据库的基本操作命令

用户 root

密码 123456

# 登入数据库管理系统
mysql - u root - p

# 显示 所有数据库
show databases;

#  创建一个新的 数据库 AAA
CREATE DATABASE IF NOT EXISTS  AAA 
DEFAULT CHARACTER SET utf8  DEFAULT 
COLLATE utf8_general_ci;

# 使用数据库 AAA
use AAA;

#  查看表
show tables;

#  查看某个 表单的类
desc app_1_userinfo;

#  查看 表 成员
select * from app_1_userinfo;

#  删除数据库 AAA
drop database  AAA;

# 查看数据库端口
show global variables like 'port';

# 退出数据库管理系统
exit;

Django 全家桶

https://www.bilibili.com/video/BV1rT4y1v7uQ?spm_id_from=333.337.search-card.all.click

Django

创建工程目录

确保设置好 python插件环境变量 (系统需要找到 django-admin )

C:\Program Files\Python310\Scripts

DOS模式 进入到工程项目的文件夹中

创建 项目目录 AAA

django-admin startproject AAA

创建应用目录

工程项目目录下运行

python manage.py startapp app_1

创建后需要链接 seting.py

应用目录中添加 网页文件夹 templates

创建后需要链接 seting.py*

templates 用于views 中函数查找 网页文件的目录

应用目录中添加 资源文件夹 static

创建后需要链接 seting.py*

static 用于 html 中函数查找 静态素材文件的目录

html 文件中需要导入static 资源 必须以 / 开头 例如 /static/img/1.jpg

注册 (views)窗口函数 urls.py

from django.contrib import admin
from django.urls import path
from app_1 import views  # 导入窗口文件

urlpatterns = [
    path('', views.index), # 注册窗口函数
]

响应 views.py

函数 必须 传参 request

HttpResponse响应

直接返回字符串

from django.shortcuts import render, HttpResponse
# 必须转到 urls.py 中注册
def text(request): 
    return HttpResponse('欢迎')

render响应

直接渲染网页

from django.shortcuts import render 
# 必须转到 urls.py 中注册
def index(request):
    return render(request, 'index.html')

加载网页 且传入参数 渲染后输出到 request

from django.shortcuts import render
# 必须转到 urls.py 中注册
def index(request):
    # 变量 
    age = 10 
    # 列表
    name = ['名字1', '名字2']
    # 字典
    v = {'key1': 100, 'key2': '好汉'}
    return render(request, 'runoob.html',{
            'n1': 10,  # 直接数据
            'n2': age,  # 变量 
            'n3': name, # 列表
            'n4': v, # 字典
    })

重定向响应

外部重定向响应

redircet(“www.baidu.com”)

内部重定向

方式一:

from django.http import HttpResponseRedirect 

return HttpResponseRedirect('/commons/invoice_return/index/')  #跳转到index界面 

return HttpResponseRedirect('http://www.baidu.com') # 跳转到外部http

方式二:

from django.shortcuts import redirect 

return redirect('/commons/invoice_return/index/')  #跳转到index界面 

return redirect('http://www.baidu.com') # 跳转到外部http

请求第三方响应 requests (需导入requests库)

req = requests.get("http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2022/04/news")

data_list = req.json()

return render(request, 'use.html', {'data': data_list})

请求 views.py

获取 请求

request.method

GET 请求

request.GET

POST 请求

request.POST.get("name")

DOM操作(Django的数据库操作)

# ODM前的的初始化操作:

  1. 必须在 数据库操作 创建一个数据库
  2. 必须在 setings.py 项目设置 中注册数据库
  3. 确保你安装了 pymysql 库
  4. 必须在settings.py同级目录的*init.py*文件中增加下面代码
import pymysql
pymysql.install_as_MySQLdb()

定义 数据库表 models.py


# 自动创建 ID列 值 自增
# 参数说明 :default 默认值 max_length 最大长度 
class UserInfo(models.Model): 
    name = models.CharField(max_length=32) # 字符型
    password = models.CharField(max_length=64)
    age = models.IntegerField()# 数值型

    
#  在表中新增列 ,由于已存在列中可能有数据,所以新增列必须指定默认值:
age = models.IntegerField(default=0)
# 或者: 
age = models.IntegerField(null = True,blank = True )

创建数据表

# 工程项目 目录下运行
python manage.py makemigrations
python manage.py migrate

定义好的表名为 应用名称+类名

例如: app_1_UserInfo

使用 数据库表 views .py

# 导入 数据表函数
from app_1.models import UserInfo

# 创建
UserInfo.objects.create(name="吴博文")
# 删除
UserInfo.objects.filter(id=2).delete() # 根据筛选条件删除
UserInfo.objects.all().delete() # 删除所有
# 更新
UserInfo.objects.filter(id=2).update('password' = 999) # 根据筛选条件更新密码
UserInfo.objects.all().update('password' = 999) # 更新所有人的密码
# 获取
UserInfo.objects.filter(id=2)  # 根据筛选条件获取(返回一个表类)
UserInfo.objects.filter(id=1).first()  # 获取 id为 1第一个的数据
UserInfo.objects.all() # 获取所有(返回一列 表类)

HTML 数据的处理

接收窗口文件发送的数据 并 处理

接收数字,字符串,变量,列表,字典 
{{ n1 }}
接收列表的值 
{{ n2.1 }}
接收字典的值 
{{ n3.key }}
for 语句
列表,元组:
{% for i in n1 %}
<div>{{ i }} </div>
{% endfor %}

字典: n3.key , n3.values , n3.items 
{% for i ,j in n3.items %}
<div>{{ i }} </div>
<div>{{ j }} </div>
{% endfor %}
if 语句
{% if in1 == 'xxx' %}
<div> 满足条件选项 </div>
{% elif in1 == 'yyy'%}
<div> 下一个选项 </div>
{% else %}
<div> 上面都不可能 </div>

通过form 表单发送数据 并 处理

实现: form 荣国POST请求 发送给本网页并显示出来

form表单中必须添加 csrf_token 安全验证

    <h1>Django练习</h1>
    <!-- 接收 窗口 数据 -->
    <h1>{{a}}</h1>
    <!-- POST发送数据 -->
    <form method="post" action="">
        <!--  csrf_token 安全验证 -->
         <!--  响应函数前加入 修饰符 @csrf_exempt 可以免去POST 验证  -->
        {% csrf_token %} 
        <input type="text" name="name" value="Mickey">
        <input type="submit" value="Submit">
    </form>

​ view.py 窗口文件处理

def index(request):
    # 如果是 POST 请求 就吧POST请求 送来的name属性值送给index 同事渲染index.html
    if request.method == 'POST':
        name = request.POST.get('name')
        return render(request, 'index.html', {'a': name})
    # 否者 就正常执行 
    a = '数据链接HTML成功'
    return render(request, 'index.html', {'a': a})

超级链接处理流程

实现: index.html 点击 a 标签(超级链接) 跳转到 use.html

index.html 中设置 a 标签

<!-- a 标签以 GET 请求发送 -->
<a href="use">
   <button type="button" class="btn btn-primary btn-lg">Djangoc测试</button>
</a>

urls.py 中注册 GET 请求

urlpatterns = [
    path('use/', views.use),
]

views.py 中数据处理

# 跳转到 use.html
def use(request):
    return render(request, 'use.html')

html 引入 static 素材目录

在head 中注册:

{% load static %}

在body 中使用:

href = "{% static 'img/xxxxx.css %}"
src = "{% static 'img/xxxxx.png %}"

设置 seting.py

# seting.py 中 链接新的 app 
INSTALLED_APPS = [
    'app_1.apps.App1Config',
]

 # 链接数据库:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 使用哪个数据库引擎
        'NAME':  'aaa',  # 新建的 数据库名字
        'USER':  'root',  # 用户名(注意 区分大小写)
        'PASSWORD': '123456',  # 密码
        'HOST': '127.0.0.1',  # 哪台机器 (本机)
        'POST': 3306,  # 端口
    }
}

# 链接网页文件目录(默认 TEMPLATES)
TEMPLATES = ........

# 链接静态素材文件目录(默认 static)
STATIC_URL = 'static/'
#  中文模式
LANGUAGE_GODE =  'zh-hans'

启动服务器

# 工程项目 目录下运行
# 启动 服务器 后面数字为 端口号
python manage.py runserver 8080 

ModelForm

Ajax 请求

使用jQuery

发送 ajax 请求

$.ajax(
    //发送数据{
    url:"发送的地址",
    type:"post",//get
    data:{
        ni:123,
        n2:456
    },
    //接收数据
    success:function(res){
        console.log(res)
    }
}
)

响应

函数前加入 修饰符 @csrf_exempt 可以免去POST 验证

from django.views.decorators.csrf import csrf_exempt
# 导入json模块
import json
# 导入 json 响应模块
# from django.http import JsonResponse

# 免验证
@csrf_exempt
def use(request):
    # 省略了 POST和GET 请求的 if判断处理 时候时补上
    print (request.POST)
    data = {"status":True,'data':[11,22,33,44]}
    # 转换为 json 格式的数据 用于返回
    json_s = json.dumps(data)
    return HttpResponse(json_s)
	# 或者也可以直接导出 json格式数据
    #return JsonResponse(data) (常用)

前端使用json格式的数据 需要进行转换 使用jQuery 的函数声明 dataType:“JSON”

图标展示

highchart 国外

echarts 国内

下载echarts 并链接

查看使用文档

l利用Ajax 请求并获取数据 放入echarts 展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值