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.最终效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值