首页 > 其他分享 >django小白必会

django小白必会

时间:2024-03-28 20:03:56浏览次数:23  
标签:文件 静态 request Django 小白 ORM 必会 django data

Django基础

1.Django小白必会三板斧

1.1 HttpResponse 返回纯文本或者JSON数据

from django.shortcuts import render, HttpResponse


def index(request):
    print(request)
    # HttpResponse :返回纯文本或者JSON数据
    return HttpResponse("ok")

1.2 render 渲染前端页面

from django.shortcuts import render, HttpResponse


# django 三板斧
def index(request):
    print(request)

    # render渲染前端页面的
    # request 当前request对象
    # template_name:当前app下面有一个templates文件夹
    return render(request, "index.html")

1.3 redirect 重定向

def index(request):
    print(request)
    # redirect 重定向
    return redirect("/home/")
  
def home(request):
    return render(request, "index.html")

2.静态文件

2.1 模版文件

  • html文件

2.2 资源文件

  • 存储在本地的js文件,css文件,图片,视频,音频等
  • 一般情况下我们会对静态文件进行划分
# jQuery...js文件 ---> js文件夹
# bootstrap ---> plugins 插件
# css文件 ---> css文件夹
# 头像 ---> avatar 文件夹

# static 

2.3 在Django中配置静态文件

  • 在settings.py文件中
# 默认的静态文件配置
STATIC_URL = '/static/'
  • 在app 下创建一个static文件夹
    • 创建一个子分类文件夹
  • 访问静态文件http://127.0.0.1:8000/static/avatar/1.jpg
  • 在页面上可以渲染出当前静态文件

2.4 在项目目录下的静态文件访问不到

# 在Django的默认静态文渲染系统中
# 默认的文件访问位置为当前APP下的静态文件

# 如果想访问到项目目录下指定文件夹内容的静态文件,需要额外添加配置


# 静态文件配置
# 默认查找位置是当前APP的目录下
# 这个配置定义了静态文件应用在启用 FileSystemFinder 查找器时将穿越的额外位置
STATICFILES_DIRS  = [
    # img :当前项目下的静态文件夹的名字,并且也是路由中的地址前缀
    os.path.join(BASE_DIR, 'img')
]

2.5 在前端中使用静态文件

# 第一步
# 在前端页面中的第一行  
# {% load static  %}

# 第二步:使用静态文件
# {% static 'avatar/1.jpg' %}
{% load static  %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>当前是index页面</h1>
<img src="{% static 'avatar/1.jpg' %}" alt="">
</body>
</html>

3. request对象

3.1 request.method 获取请求方式

def register(request):
    # request.methid
    print(request.method)

3.2 request.GET 获取到get请求携带的请求参数

http://localhost:8000/register/?username=111&password=111&hobby=music&hobby=sport&hobby=game
  • request.GET.get(key)
# 获取获取键值对数据(单个的键值对数据),多个数据的话,只能获取到最后一个
data = request.GET
        print(data)  # <QueryDict: {'username': ['serein'], 'password': ['123'], 'hobby': ['music', 'sport']}>
        username = data.get('username')
        print(username)
  • request.GET.getlist(ke
# 获取GET请求携带的列表数据(一个键多个值的数据)
data = request.GET
        print(data)  # <QueryDict: {'username': ['serein'], 'password': ['123'], 'hobby': ['music', 'sport']}>
        hobbylist = data.getlist("hobby")
        print(hobbylist) 

3.3 request.POST 获取POST请求携带的请求体

POST
<QueryDict: {'username': ['serein'], 'password': ['123'], 'hobby': ['sport', 'game']}>


        data = request.POST
        print(data)
        username = data.get('username')
        hobbylist = data.getlist("hobby")

4. Django连接数据库

4.1 Django自带一个数据

  • 自带一个数据库sqlite3
# 在settings.py文件中

# 数据库的配置项
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

4.2 Django连接MySQL数据库

4.2.1 配置mysql参数
# MySQL配置项
DATABASES = {
    'default': {
        # ENGINE :默认的引擎 mysql
        'ENGINE': 'django.db.backends.mysql',
        # HOST : 主机地址127.0.0.1 / localhost
        "HOST": "127.0.0.1",
        # PORT : mysql 的服务端口
        "PORT": 3306,
        # USER : 用户名
        "USER": "root",
        # PASSWORD : 数据库密码
        "PASSWORD": "123456",
        # NAME  : 数据库名字
        "NAME":"django_02",
        # CHARSET : 默认编码集
        "CHARSET": "utf8mb4"
    }
}
4.2.2 启动Django报错
  • Did you install mysqlclient?

4.3 启动mysql报错

4.3.1 解决办法一
  • 猴子补丁
  • 可以放在任意位置的 __init__.py文件中
import pymysql

pymysql.install_as_MySQLdb()
4.3.2 下载第三方模块
  • 3.x版本以后建议你使用 mysqlclient
pip install mysqlclient
  • 运气
    • win 电脑给力一点,安装就不会报错
  • mac系统安装 mysqlclient 费劲
4.3.3 win报错解决办法
pip install mysqlclient-2.2.4-cp310-cp310-win_amd64.whl

5.Django中的orm框架

5.1 什么是ORM

  • ORM是一种将对象与关系型数据库之间的映射的技术,主要实现了以下三个方面的功能:
    • 数据库中的表映射为Python中的类
    • 数据库中的字段映射为Python中的属性
    • 数据库中的记录映射为Python中的实例
  • ORM的主要优点是可以减少开发人员编写重复的SQL语句的时间和工作量,并且可以减少由于SQL语句的调整和更改所带来的错误。

5.2 DjangoORM框架的优点

  • 与其他ORM框架相比,Django ORM拥有以下优点:
  • 简单易用:Django ORM的API非常简单,易于掌握和使用。
  • 丰富的API:Django ORM提供了丰富的API来完成常见的数据库操作,如增删改查等,同时也支持高级查询和聚合查询等操作。
  • 具有良好的扩展性:Django ORM可以与其他第三方库进行无缝集成,如Django REST framework、Django-Oscar等。
  • 自动映射:Django ORM支持自动映射,开发者只需要定义数据库表的结构,就可以自动生成相应的Python类,从而减少开发过程中的重复代码量。

5.3 ORM之建表操作

5.3.1 创建模型表
class User(models.Model):
    # 数据库中的字段映射未puthon的属性
    # 定义一个用户名,字符串类型,长度
    # mysql 字符串类型,varchar char
    # CharField字符串类型,max_length最大长度,verbose_name注释
    username = models.CharField(max_length=32, verbose_name="用户名")
    password = models.CharField(max_length=32, verbose_name="密码")
    # IntegerField相当于mysql的int字段
    age = models.IntegerField(verbose_name="年龄")
    # FloatField相当于mysql的float字段
    salary = models.FloatField(verbose_name="薪资")
5.3.2 迁移文件
  • 生成迁移文件
# 命令行
python manage.py makemigrations
chenxu@chenxudeMacBook-Pro new_djangoProject % python3.10 manage.py makemigrations

Migrations for 'app01':
  app01/migrations/0001_initial.py
    - Create model User
  • 迁移文件生效
# 迁移记录生效
python manage.py migrate

标签:文件,静态,request,Django,小白,ORM,必会,django,data
From: https://www.cnblogs.com/Formerly/p/18102501

相关文章

  • Ajax和django自带序列化组件
    Ajax和django自带序列化组件1.Ajax1.1Ajax介绍AJAX(AsynchronousJavascriptAndXML)翻译成中文就是“异步的Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML)。AJAX不是新的编程语言,而是一种使用现有标准的新方法......
  • Django之图形验证码
    【1】生成图片验证码依赖于pillow模块pipinstallpillow使用pillow模块在导入时使用importPIL,而不是pillow【1.1】Pillow图像生成模块fromPILimportImage,ImageDraw,ImageFont#Image:生成图片对象#ImageDraw:生成画笔对象#ImageFont:控制字体样式#图......
  • 0基础小白想转行做网络安全,该自学还是报班呢?
    伴随着时代的飞速发展,网络安全已在各个领域得到了广泛的应用,现已成为众多人心仪的热门行业。但由于网络安全行业的岗位大多数都是纯技术岗,导致很多人都在担心:0基础学网络安全会不会很难?自学能不能学会?其实,网络安全涉及的知识面很广、术语和理论知识都比较多,除了网络硬件知......
  • Django框架之python后端框架介绍
    一、网络框架及MVC、MTV模型1、网络框架网络框架(Webframework)是一种软件框架,用于帮助开发人员构建Web应用程序和Web服务。它提供了一系列预先编写好的代码和工具,以简化开发过程并提高开发效率。网络框架通常包括以下功能和特点:路由处理(Routing):网络框架定义了URL与处理程序......
  • mysql 主从复制 -- django发送钉钉通知
    mysql主从搭建#之前做过redis的主从,很简单#mysql稍微复杂一些,搭建mysql主从的目的是?-读写分离-单个实例并发量低,提高并发量-只在主库写,读数据都去从库#原理MySQL服务器之间的主从同步是基于二进制日志机制(binlog),主服务器使用二进制日志来(bi......
  • 【附源码】django计算机毕业设计web的学生作业管理系统(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在当今信息化、数字化的教育环境中,学生作业管理已成为教学过程中不可或缺的一部分。传统的作业管理方式,如纸质作业本、电子邮件提交等,存在着效率低下、资源......
  • 【附源码】django计算机毕业设计病房管理系统设计与实现(源码+mysql+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:在现代医疗体系中,病房管理是医院运营的重要组成部分。随着科技的不断进步和信息化水平的提高,传统的手工或半自动化的病房管理模式已经无法满足现代医疗服务......
  • 小白学视觉 | CNN的一些可视化方法
    本文来源公众号“小白学视觉”,仅用于学术分享,侵权删,干货满满。原文链接:一个算法工程师复现算法的踩坑总结作者|yishun@知乎来源丨https://zhuanlan.zhihu.com/p/53683453编辑| 极市平台0导读对神经网络进行可视化分析不管是在学习上还是实际应用上都有很重要的意义,......
  • Spark基础必会知识总结
    1、RDD是什么,RDD的五大属性RDD是弹性分布式数据集五大属性:分区(指定数据是哪个分区的)分区内的计算逻辑分区器(如果有键值对可以控制分区的数据流向)血缘关系移动数据不如移动计算2、RDD的弹性体现在哪里存储弹性:内存磁盘一起用计算弹性:重试机制分片弹性:分区可以改变容......
  • 【蓝桥杯3.23小白赛】(详解)
    第一题签到题不多说【二进制王国】#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;//intCmp(strings1,strings2)测试了一下时间差确实很明显,还是用下面的内个intCmp(conststring&s1,conststring&s2)//const修饰表示在函......