当前位置: 首页 > news >正文

django之静态文件配置 请求方式 request对象方法 pycharm连接数据库 django连接MySQL 初识ORM

一:静态文件配置

1.什么是静态文件?
  • 1.第三方框架
  • 2.css文件
  • 3.js文件
  • 4.图片文件
2.django项目中在哪里存放静态文件?
  • 在项目中创建static(名字必须是static)文件夹,在文件夹中可以按照不同的文件类型再分文件夹 (css,js,img,others)管理文件
3.静态文件如何导入?

1.静态文件资源配置:先到配置文件中把static文件添加到项目的sys.path根目录下

# 接口前缀
STATIC_URL = '/static/'

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

2.到html文件中导入静态文件

  • 方法一:正常导入
<link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
<script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script>
  • 方法二:动态解析
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">

二:请求方式

1.GET请求

特点:

  • 1.朝别人索要数据
  • 2.可以携带额外的无关紧要,大小不超过4KB的数据 (例如:url?x=111&y=222)
  • 3.没有请求体
2.POST请求

特点:

  • 1.朝别人提交数据
  • 2.可以携带额外数据,兵且数据都放在请求体中,数据大小没有限制
3.form表单中的数据请求

1.form表单默认的数据请求方式是get

2.action 数据提交的地址

  • 1.不写时:朝当前页面所在地址提交数据
  • 2.写后缀:/index/ 会自动补全ip和port
  • 3.写网址的全称:https://www.baidu.com

三:request对象方法

1.获取请求方式:request.mothod

2.POST

  • 1.request.POST 获取POST请求发送来的普通数据(不包含文件)
  • 2.request.POST.get() 默认只获取列表中的最后一个数据值
  • 3.request.POST.getlist() 获取键对应的整个列表

3.GET

  • 1.request.GET 获取url后面携带的非敏感数据
  • 2.request.GET.get() 默认只获取列表中的最后一个数据值
  • 3.requeat.GET.getlist() 获取键对应的整个列表

四:pycharm连接数据库

1.步骤:
  • 1.找到database按钮,点击进入
  • 2.找到要连接的数据库,输入用户名,密码,想要连接的数据库名
  • 3.测试连接,如果测试成功的话,点击apply,再点击确认按钮即可
2.简单的数据的增删改查
  • 直接在pycharm中打开表,在表中通过点点点的方式对数据进行操作

五:django连接MySQL

1.配置数据库
  • 第一步:settings.py中配置
DATABASES = {
   'default': {'ENGINE': 'django.db.backends.mysql',
	'NAME': 'dj02',
	'USER': 'root',
	'PASSWORD': 'xxx',
	'HOST':'127.0.0.1',
	'PORT': 3306,
	'CHARSET': 'utf8'
     }  
}
  • 2.第二步:指定MySQL的模块
  • django1.11 版本需要在项目或者应用目录下的__ init __.py 导入模块pymysql
import pymysql
pymysql.install_as_MySQLdb()
  • django2.2 及以上版本只需要使用mysqlclient模块即可

六:初识ORM

1.什么是ORM?
  • 对象关系映射
类			映射成    表
对象   	    映射成    记录
对象点属性     映射成    字段对应的值
2.用ORM编写模型类
class User(model.Model):  # 类似于定义了表名
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    pwd = models.IntegerField()

注意:主键id也可以不用自己写,ORM会自动帮我面创建一个主键id字段

3.数据库的迁移命令(打死都要给我记住)
  • 1.python38 manage.py makemigrations
  • 2.python38 manage.py migrate
  • 3.上述两天命令也可以在pycham中的Tool中简写成:
    • makemigrations 要改动的app(不写的话,默认所有的app被执行)
    • migtate 要改动的app
4.ORM语法(增删改查)
# 1.查:结果看成是一个列表套数据对象
models.User.objects.filter()
# 如何获取对象 可以使用first()方法 如果没有值会返回None 我们if判断即可

# 2.增
models.User.objects.create()

# 3.改
models.User.objects.filter(id=1).update(name='ming')

# 4.删
models.User.objests.filter(id=3).delete()
5.ORM关联外键字段
  • 1.一对一
  • 外键建在查询频率高的表中
detial = models.OneToOneField(to='AuthorDetail', on_delete=models.CASCADE)
  • 1.一对多
  • 外键建在多的一方
publish = models.ForeignKey(to='Publish',on_delete=models.CASCADE)
  • 1.多对多
  • 外键字段写在任意一张表中,ORM会自动帮你创建第三张表
authors = models.ManyToManyField(to='Ahthors')

作业:

1.路由层代码

from django.contrib import admin
from django.urls import path,re_path
from app01 import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('home/', views.home),
    path('insert/', views.insert),
    re_path('update/(\d+)/', views.update, name='update'),
    re_path(r'^delete/(\d+)/', views.delete, name='delete'),

]

2.视图层代码

from django.shortcuts import render,redirect

# Create your views here.
from app01 import models
def home(request):
    data = models.Student.objects.all()
    return render(request, 'home.html', locals())


def insert(request):
    # 新增数据
    if request.method == 'POST':
        name = request.POST.get('name')
        age = request.POST.get('age')
        hobby = request.POST.get('hobby')
        models.Student.objects.create(name=name, age=age, hobby=hobby)
        return redirect('/home/')
    return render(request, 'insert.html')


def update(request, stu_id):
    if request.method == 'POST':
        name = request.POST.get('name')
        age = request.POST.get('age')
        hobby = request.POST.get('hobby')
        models.Student.objects.filter(pk=stu_id).update(name=name, age=age, hobby=hobby)
        return redirect('/home/')
    stu_obj = models.Student.objects.filter(pk=stu_id).first()
    return render(request, 'update.html', locals())

def delete(request, delete_id):
    models.Student.objects.filter(pk=delete_id).delete()
    return redirect('/home/')

3.最终效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关文章:

  • 自动控制原理6.3---串联校正
  • Windows下Jenkins的运行环境由Java8 升级为Java11
  • Linux中用户组管理
  • 【前端】html+js+css开发入门超详细介绍
  • 车企上市只是时间问题,零跑只是抢先一步而已
  • 软件工程考试选择题:模块的扇入扇出 深度宽度
  • 黑马C++ 02 核心5 —— 类和对象_运算符重载(重难点)
  • 移动办公平台迎来定制潮,WorkPlus如何在钉钉和企微光环下 “出圈”?
  • Keras - ModelCheckpoint
  • 【零基础学Python】Day10 Python解释器
  • 搭建网课查题搜题公众号
  • Nginx的rewrite
  • redux入门详解
  • WRF学习笔记之三:使用ERA5数据驱动并运行WRFV4.4(一层嵌套)/WRF运行实录/WRF报错(踩坑)记录
  • PaddleOCR 2.6 编译详细步骤 + 踩坑记录(C++ GPU版)
  • JavaScript-如何实现克隆(clone)函数
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • CentOS 7 修改主机名
  • EventListener原理
  • HTTP那些事
  • isset在php5.6-和php7.0+的一些差异
  • Java的Interrupt与线程中断
  • Shadow DOM 内部构造及如何构建独立组件
  • 爱情 北京女病人
  • 机器学习 vs. 深度学习
  • 京东美团研发面经
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 软件开发学习的5大技巧,你知道吗?
  • 思考 CSS 架构
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 移动端 h5开发相关内容总结(三)
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​【已解决】npm install​卡主不动的情况
  • #图像处理
  • (4)STL算法之比较
  • (5)STL算法之复制
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (一)基于IDEA的JAVA基础1
  • (转)德国人的记事本
  • (转)详解PHP处理密码的几种方式
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET 8.0 中有哪些新的变化?
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .net操作Excel出错解决
  • .NET开发不可不知、不可不用的辅助类(一)
  • .php文件都打不开,打不开php文件怎么办
  • /3GB和/USERVA开关
  • /var/log/cvslog 太大
  • @31省区市高考时间表来了,祝考试成功
  • @test注解_Spring 自定义注解你了解过吗?
  • [ NOI 2001 ] 食物链
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬