Django核心

安装django

pip install django 
# pip install django==3.1.6

创建django项目

在一个项目中可以包含多个应用程序。

django-admin startapp app_name  #创建一个应用程序
django-admin startproject project_name #创建一个项目

运行django项目

python manage.py runserver 8000

MTV模式

Models:数据库管理员(非必须)
Templates:模板引擎(非必须)
Views:接口引擎
浏览器输入地址——> urls.py ——> view ——> model ——> 数据库 ——> views ——> templates ——> response(字节码bytes)——> 浏览器
在这里插入图片描述

请求与响应

request ——> urls(path)
response ——> views(HttpResponse, TemplateResponse, JsonResponse )

路由分层

就是 urls.py 之间规则

数据库迁移命令

python manage.py makemigrations
python manage.py migrate

这两个命令是 Django 中用于数据库迁移的命令。

python manage.py makemigrations 命令用于生成数据库迁移文件。迁移文件是 Django 中的一种特殊文件,它记录了对模型的更改,例如创建新表、添加字段、修改字段等。通过运行该命令,Django会检测您对模型的更改,并生成相应的迁移文件,以便在数据库中应用这些更改。

python manage.py migrate 命令用于将数据库迁移应用到实际的数据库中。在运行该命令时,Django会查找尚未应用的迁移文件,并将其应用到数据库中,以确保数据库结构与模型定义保持同步。

通常情况下,当您对模型进行更改后,需要运行 makemigrations 命令生成迁移文件,然后再运行 migrate 命令将这些更改应用到数据库中。这样可以保持数据库的一致性,并确保模型的更改在数据库中得到正确地反映。

需要注意的是,执行迁移操作前,请确保您已正确配置了数据库连接信息,并且数据库已正确创建。此外,如果您的模型有关联关系(如外键、多对多关系等),Django 还会自动生成相应的迁移文件来处理这些关联关系。

模板语言进阶

Django 的模板语言是一种简单而强大的模板系统,用于在 Django 的视图中生成动态的 HTML、XML、JSON 等内容。以下是 Django 模板语言的主要特点和语法:

  • 插值:使用双大括号({{}})将变量插入到模板中,例如 {{ variable }}。
  • 过滤器:可以使用过滤器对变量进行处理和转换,例如 {{ variable|filter }}。过滤器可以通过管道(|)进行串联。
  • 标签:使用单大括号和百分号({% %})包围的内容,用于执行控制逻辑、循环、条件判断等操作。例如 {% if condition %} … {% endif %}。
  • 注释:使用 {# #} 包围的内容,用于添加注释,这些注释在渲染模板时会被忽略。
  • 循环:使用 {% for item in list %} … {% endfor %} 进行循环迭代,可以遍历列表、字典等可迭代对象。
  • 条件判断:使用 {% if condition %} … {% elif condition %} … {% else %} … {% endif %} 进行条件判断。
  • 继承和块:可以使用 {% extends ‘base.html’ %} 定义模板继承关系,并使用 {% block content %} … {% endblock %} 在父模板中定义可替换的块。
  • URL 反向解析:使用 {% url ‘view-name’ arg1 arg2 %} 可以根据视图名称和参数生成相应的 URL。
  • 静态文件:使用 {% static ‘path/to/file’ %} 可以生成静态文件的 URL。

Django 模板语言提供了丰富的功能和语法,可以使模板与视图逻辑相分离,提高代码的可维护性和重用性。它允许在模板中动态地插入变量、执行控制逻辑和循环,使开发人员能够轻松地生成动态的内容和交互式的用户界面。

Model 之 Instance 与 QuerySet

  • 数据库
    仓库

  • Model
    仓库设计图
    Field:CharField、IntegerField、FloatFiled、DateTimeField、ForeignKey、OneToOneField、ManyToManyField…
    Field参数:max_length、choices、default、null、blank…

  • Instance
    货物
    常用方法:save()、get()、delete()…

  • QuerySet(查询集)
    包裹(可以有0-N个Instance)
    类似列表的对象(可索引,切片,in(instance in queryset))
    常用方法:filter()、get()、all()、delete()、update()、create()、bulk_create()、order_by()…

  • 举个例子:
    Model的定义:

    class Person(models.Model):
        GENDER_CHOICES = (
            (1, '男'),
            (0, '女')
        )
    
        name = models.CharField(max_length=255)
        age = models.PositiveIntegerField()
        gender = models.BooleanField(choices=GENDER_CHOICES) # item.gender 显示的是 True 或者 False, item.get_gender_display 显示的是 男 或者 女
        id_card = models.CharField(max_length=18)
        address = models.CharField(max_length=255)
        temperature = models.FloatField()
    
        '''
        class Meta可以用于指定一些与模型类相关的配置选项,例如数据库表名、排序方式、权限等。
        '''
        class Meta:
            permissions = ()
    

    QuerySet 和 Instance 的操作(可以通过 python manage.py shell 方便的测试)

    from second_app.models import Person
    p = Person(name="张三", age=20, gender=1, id_card="123123123123333333", address='成都市成华区', temperature=38.5) # 得到的是一个 instance
    p.save()
    ps = Person.objects.fileter() # 返回的一个 QuerySet
    ps.count()
    p = Person.objects.get(id=1)  # 返回的是一个 instance
    p.age = 30
    p.refresh_from_db()
    p.age = 30
    p.save()
    p.refresh_from_db()
    ps = Person.objects.filter(id=1) # 返回的一个 QuerySet
    ps.update(age=22)
    ps[0]
    ps[0].age
    ps.delete()
    ps = Person.objects.filter()
    

Django命令行

python manage.py shell

python manage.py shell 是 Django 提供的专用命令行工具,用于与 Django 项目进行交互,可以方便地访问项目资源、进行数据库操作和快速开发调试。而默认的 Python Shell 只是 Python 解释器的交互式环境,没有加载 Django 项目的配置和上下文,无法直接访问项目中的资源和数据库。

  • Django 环境加载:python manage.py shell 在启动时会加载 Django 项目的配置和应用,确保在交互式环境中可以直接访问项目中定义的模型、视图、管理器等。

  • 方便的数据库访问:python manage.py shell 会自动为你配置好数据库连接,可以直接通过模型类进行数据库操作,而不需要手动设置数据库连接。

  • 项目上下文加载:python manage.py shell 会加载项目的上下文,包括项目的设置、应用配置等信息,使得在交互式环境中可以方便地访问和操作项目相关的资源。

  • 快速开发和调试:python manage.py shell 方便开发人员进行快速的代码测试、调试和验证,可以直接执行和测试 Django 项目中的代码逻辑。

Model 与 Form 与 ModelForm

Model:Model是面向数据库的
Form:Form是面向前端的
ModelForm:与Model有关,与前端也有关

前后端不分离之五大视图

动作视图名是否需要Model是否需要Form
CreateView
DeleteView
UpdateView
ListView, DetailView
ListView

CreateView

DetailView

UpdateView

DeleteView

前后端分离之常用视图

View

APIView

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI_潜行者

赐予我力量吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值