Django学习笔记

这篇具有很好参考价值的文章主要介绍了Django学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.常用命令

创建项目:django-admin startproject 项目名

创建APP(进入工程目录):python manage.py startapp 网站名

创建库表(进入工程目录):python manage.py makemigrations

执行库表建立(进入工程目录):python manage.py migrate

启动运动:python manage.py runserver

模板渲染嵌入语法:在html可以嵌入后台语言 区分符号-》> {%命令%} {{变量}}

2.编写setting

在INSTALLED_APPS里添加APP的目录名进去

改语言 LANGUAGE_CODE = 'zh-hans'

3.在APP目录创建templates文件夹

渲染文件,用于存放html文件

4.编写APP下的views

def index(request):
    return render(request,'index.html')

5.编写项目urls(路由)

from myblog import views #导入views
path('',views.index) #路由页面

#path转换器:
int:<int:page>
str:<str:name>
slug:<slug:xxx>  #匹配带符号的文本
path:<path:xxx>  #匹配地址包括/
    
#name命名
#模板中使用:{% url 'name' %}

#url反向解析
path('index',views.index,name='index_name') #路由页面
{% url 'name' %}
{% url 'name' '参数值1' '参数值2' %}
{% url 'name' age='参数值1' name='参数值2' %} #命名传参

6.在项目init下配置Mysql

import pymysql
pymysql.install_as_MySQLdb()

7.setting中配置MySQL

DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.mysql', # 数据库引擎
  'NAME': 'django_mysql', # 数据库名
  'USER': 'root', # 账号
  'PASSWORD': 'root', # 密码
  'HOST': '127.0.0.1', # HOST
  'POST': 3306, # 端口
 
 }
}

8.models.py模板

class Student(models.Model):
 """
 创建如下几个表的字段
 """
 # 学号 primary_key=True: 该字段为主键
 studentNum = models.CharField('学号', primary_key=True, max_length=15)
 # 姓名 字符串 最大长度20
 name = models.CharField('姓名', max_length=20)
 # 年龄 整数 null=False, 表示该字段不能为空
 age = models.IntegerField('年龄', null=False)
 # 性别 布尔类型 默认True: 男生 False:女生
 sex = models.BooleanField('性别', default=True)
 # 手机 unique=True 该字段唯一
 mobile = models.CharField('手机', unique=True, max_length=15)
 # 创建时间 auto_now_add:只有在新增的时候才会生效
 createTime = models.DateTimeField(auto_now_add=True)
 # 修改时间 auto_now: 添加和修改都会改变时间
 modifyTime = models.DateTimeField(auto_now=True)
 
 # 指定表名 不指定默认APP名字——类名(app_demo_Student)
 class Meta:
	db_table = 'student' #表名
	verbose_name = '学生'  # 在admin站点中显示的名称
    verbose_name_plural = verbose_name  # 显示的复数名称
 def __str__(self):
	"""定义每个数据对象的显示信息"""
	return self.name
#定义英雄模型类HeroInfo
class HeroInfo(models.Model):
    GENDER_CHOICES = (
        (0, 'male'),
        (1, 'female')
    )
    hname = models.CharField(max_length=20, verbose_name='名称') 
    hgender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')  
    hcomment = models.CharField(max_length=200, null=True, verbose_name='描述信息') 
    hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书')  # 外键
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_heros'
        verbose_name = '英雄'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.hname

数据库表名:模型类如果未指明表名,Django默认以 小写app应用名_小写模型类名 为数据库表名。

可通过db_table 指明数据库表名。

9.数据库的增删改查

查询数据

Student.objects.all() #获取表中全部数据
Student.objects.all().order_by('-id') #id倒序
Student.objects.filter(name='tom1') #过滤查询
Student.objects.get(name='tom1') #获取一条数据,没有就报错
Student.objects.count() #查询结果数量

Student.objects.values('colums') # 只返回指定字段,字典
Student.objects.values_list('colums') # 只返回指定字段,元组

过滤查询

实现SQL中的where功能,包括

  • filter 过滤出多个结果
  • exclude 排除掉符合条件剩下的结果
  • get 过滤单一结果

1)相等

exact:表示判等。

例:查询编号为3的图书。

BookInfo.objects.filter(id__exact=3)
# 可简写为:
BookInfo.objects.filter(id=3)

2)模糊查询

contains:是否包含。

说明:如果要包含%无需转义,直接写即可。

例:查询书名包含’游’的图书。

BookInfo.objects.filter(btitle__contains='游')

startswith、endswith:以指定值开头或结尾。
例:查询书名以’记’结尾的图书

BookInfo.objects.filter(btitle__endswith='记')

以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith.

3) 空查询

isnull:是否为null。

例:查询书名不为空的图书。

BookInfo.objects.filter(btitle__isnull=False)

4) 范围查询

in:是否包含在范围内。

例:查询编号为1或3或5的图书

BookInfo.objects.filter(id__in=[1, 3, 5])

5)比较查询

gt :大于 (greater then)
gte :大于等于 (greater then equal)
lt :小于 (less then)
lte :小于等于 (less then equal)
例:查询编号大于3的图书

BookInfo.objects.filter(id__gt=3)

不等于的运算符,使用exclude()过滤器。

例:查询编号不等于3的图书

BookInfo.objects.exclude(id=3)

6)日期查询

year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。

例:查询1980年发表的图书。

BookInfo.objects.filter(bpub_date__year=1980)

例:查询1980年1月1日后发表的图书。

BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1))

F对象

之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用F对象,被定义在django.db.models中。

语法如下:

F(属性名)
例:查询阅读量大于等于评论量的图书。

from django.db.models import F
BookInfo.objects.filter(bread__gte=F('bcomment'))

可以在F对象上使用算数运算。

例:查询阅读量大于2倍评论量的图书。

BookInfo.objects.filter(bread__gt=F('bcomment') * 2)

聚合函数

使用aggregate()过滤器调用聚合函数。聚合函数包括:Avg(平均),Count(数量),Max(最大),Min(最小),Sum(求和),被定义在django.db.models中。

例:查询图书的总阅读量。

from django.db.models import Sum
BookInfo.objects.aggregate(Sum('bread'))
# 注意aggregate的返回值是一个字典类型

排序

使用order_by对结果进行排序

BookInfo.objects.all().order_by('bread')  # 升序
BookInfo.objects.all().order_by('-bread')  # 降序

增加数据

create方式插入

通过 模型类.objects.create()保存。

HeroInfo.objects.create(
    hname='沙悟净',
    hgender=0,
    hbook=book
)

save方式插入

from app_demo.models import Student
import random
"""
插入测试数据
"""
def insert(request):
 # 随机整数 作为学号
 for i in range(0, 5):
  studentNum = int(random.uniform(0, 1) * 10000000000)
  # 从models文件中获取student对象
  student = Student()
  # 给对象赋值
  student.studentNum = studentNum
  student.name = 'tom' + str(i)
  student.age = 15
  student.sex = random.choice([True, False])
  student.mobile = int(random.uniform(0, 1) * 10000000000)
  # 插入数据
  student.save()
 
 return HttpResponse('数据插入完毕')
from datetime import date
book = BookInfo(
    btitle='西游记',
    bput_date=date(1988,1,1),
    bread=10,
    bcomment=10
)
book.save()

修改数据

def modify(request, studentNum):
 # 通过学号获取student对象
 student = Student.objects.get(studentNum=studentNum)
 # 设置student的name为jack
 student.name = 'jack'
 student.save()
 return HttpResponse('修改成功.')

save

修改模型类对象的属性,然后执行save()方法

hero = HeroInfo.objects.get(hname='猪八戒')
hero.hname = '猪悟能'
hero.save()

update
使用模型类.objects.filter().update(),会返回受影响的行数

HeroInfo.objects.filter(hname='沙悟净').update(hname='沙僧')

删除数据

def delete(request, studentNum):
 student = Student.objects.get(studentNum=studentNum)
 student.delete()
 return HttpResponse('删除成功.')

10.将models转换为json

from django.core import serializers
tools = Tools.objects.all()
json_data = serializers.serialize('json', tools)
json_data = json.loads(json_data)

11.CORS跨域配置

下载corsheader

pip install django-cors-headers

修改setting.py中配置

在INSTALLED_APPS中增加corsheaders

INSTALLED_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'corsheaders',#这是我们的主角,放在新建的其他项目之前
     'app01',
 ]
 MIDDLEWARE = [
     'django.middleware.security.SecurityMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'corsheaders.middleware.CorsMiddleware', #注意顺序,必须放在这儿
     'django.middleware.common.CommonMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
 ]

setting 里再进行这样的配置

CORS_ORIGIN_ALLOW_ALL = True

CORS_ALLOW_CREDENTIALS = True
#允许所有的请求头
CORS_ALLOW_HEADERS = ('*')

12.模板标签

if:
	{% if %}
	{% endif %}
for: 
	{% for i in list %}
	{% empty %}
	{% endfor %}

for内置变量-forloop:

变量 描述
forloop.counter 循环的当前迭代(从1开始索引)
forloop.counter0 循环的当前迭代(从0开始索引)
forloop.revcounter counter值的倒序
forloop.revcounter0 counter0值的倒序
forloop.first 如果是第一次循环,则为真
forloop.last 如果是最后一次循环,则为真
forloop.parenloop 当嵌套循环,parentloop表示外层循环

模板过滤器

语法:{{ 变量 | 过滤器1:'参数值1' | 过滤器2:'参数值2' ...}}文章来源地址https://www.toymoban.com/news/detail-487585.html

常用过滤器

过滤器 说明
lower 将字符串转换为全部小写
upper 将字符串转会为大写形式
safe 默认不对变量内的字符串进行html转义
add:"n" 将value的值增加n
truncatechars:'n' 如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“.….")结尾。

模板继承

父模板:
    {% block block_name %}
    {% endblock %}

子模板:
    开头使用:{% extends %}
    {% block block_name %}  #block_name与父模板对应
    {% endblock %}

简化变量

{& with val.xxx as i &}
{% endwith %}

到了这里,关于Django学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linu学习笔记——常用命令

    Linux 常用命令全拼 | 菜鸟教程 su:Swith user(切换用户) 目录结构:Linux 系统目录结构 | 菜鸟教程 print work directory 打印当前目录 显示出当前工作目录的绝对路径 cd 目录  创建文件夹 创建文件 复制并重命名 路径/  不写为当前路径 其中,filename是你想要编辑的文件名。如果该文

    2024年02月13日
    浏览(27)
  • 【软件测试学习笔记6】Linux常用命令

    command  [-options] [parameter] command 表示的是命令的名称 []表示是可选的,可有可无 [-options]:表示的是命令的选项,可有一个或多个,也可以没有 [parameter]:表示命令的参数,可以有一个或多个,也可以没有 绝对路径:唯一 /开头    cd/etc/abrt ~/开头  cd/usr/bin ~就是/home/用户  

    2024年01月21日
    浏览(56)
  • Git学习笔记(第3章):Git常用命令

    目录 3.1 设置用户签名 3.2 初始化本地库 3.3 查看本地库状态 3.4 添加暂存区 3.5 提交本地库 3.6 历史版本 3.7 修改文件 3.8 版本穿梭 小结 命令 作用 git config --global user.name 用户名 设置用户签名 git config --global user.email 邮箱 设置用户签名 git init 初始化本地库 git status 查看本地库状

    2024年01月20日
    浏览(53)
  • GIT常用操作整理(从本地创建仓库到提交到GitHub全流程)学习笔记

    1. 本体和插件下载 官网: GIT Download下载 安装过程中一路默认即可。 终端输入 查看git安装是否成功。 (可选)然后下载一个 Git 状态显示到 powershell 中的非常好用插件,posh-Git(windows): 用管理员身份打开 powershell ,之后输入 重启 powershell 初始化仓库的文件位置会加一个

    2024年04月28日
    浏览(49)
  • Linux shell编程学习笔记6:查看和设置变量的常用命令

    上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 语法格式:echo [参数] [输出内容] 常用参数: -e:支持反斜线控制的字符转换(具体参

    2024年02月07日
    浏览(42)
  • 软件测试学习笔记丨docker 搭建常用服务器与平台命令

    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/29881 映射端口 : docker run -d -p 5003:80 --name mynginx nginx (5003是宿主机,80是容器端口) 映射文件 : docker run -d -p 5003:80 -v \\\"$PWD/html\\\":/usr/share/nginx/html --name mynginx nginx -v : 文件映射 docker run --name some-mysql -v /home/gaofei/test/mysq

    2024年03月13日
    浏览(61)
  • Angular学习笔记一之项目构建与模块创建

    Angular是三大框架之一,是最早开始出现并流行的框架。它是使用HTML、CSS、TypeScript编写的一个重量级框架,为大型应用开发而设计。使用Angular开发出来的客户端应用是高度模块化的。Angular提供了cli工具,组件和模块都可以使用cli工具提供的命令行来创建。Angular对于状态管理

    2024年02月07日
    浏览(41)
  • Django框架:入门指南与常用命令

    引言: 在当今的Web开发世界中,Django无疑是一个备受瞩目的框架。它以其强大的功能和易用性,吸引着越来越多的开发者。这篇博客将为你提供一个关于Django的概览,以及一些常用的命令,帮助你快速上手。 一、Django简介: Django是一个高级Python Web框架,它鼓励快速开发和干

    2024年02月03日
    浏览(40)
  • django——创建 Django 项目和 APP

    命令 : 创建Django项目 django-admin startproject name 创建子应用 python manager.py startapp name 2.1 创建工程 在使用Flask框架时,项目工程目录的组织与创建是需要我们自己手动创建完成的。 在django中,项目工程目录可以借助django提供的命令帮助我们创建。 2.1.1 创建 创建工程的命令为:

    2024年02月12日
    浏览(36)
  • 【python】Django——django简介、django安装、创建项目、快速上手

    笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django 是一个高效、功能强大的 Web 应用程序框架,采用 Python 编写

    2024年02月20日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包