Django学习小记[1] —— Start

AI助手状态可视化:像素风虚拟办公室的部署与集成指南 在人工智能与自动化工作流日益普及的今天,对AI助手工作状态的实时监控与可视化成为提升人机协作效率的关键。其核心原理在于通过状态钩子(Hooks)与轻量级API通信,将抽象的AI任务处理过程(如信息检索、代码生成、命令执行)映射为直观的视觉反馈。这项技术的价值在于打破了传统AI交互的“黑盒”状态,使开发者能够清晰感知任务进度、及时介入异常,从而优化工作流、提升团队协作透明度。典型的应用场景包括监控OpenClaw、LangChain等框架驱动的AI助手,以及管理多智能体(Multi-Agent)协作系统。本文 阅读详情
Part 1

Part 1 通过举例,从整体上过了一遍django的基本内容,包括project, app, database, model等内容。有几下内容需要注意:

  • project vs. app
    app是一个web应用程序,它是实际用来做事的,比如zinnia这个用django写的博客引擎就是一个app,但是一个project是配置文件和app的集合,相当于一个容器。一个project能够包含多个app,同时,一个app也能被多个project包含。

  • syncdb
    python manage.py syncdb 会为该project内的所有app进行数据库初始化,创建表结构,初始化数据,创建索引等。若有app改变了数据库结构,或者是有新的app增加进来,要创建新的表结构,再次运行syncdb,会为这些app进行数据库变更。django怎么识别哪个app是关联了数据库的?要知道自定义的model都是继承自django.db.models.Model这个类的。

  • Django Model API
    Django提供了非常丰富的对Model进行操作的接口,增删查改,样样俱全,比如get(), all(), save(), filter(), delete(), 还有外键xxx_set等

Part 2

这部分主要讲的是Django的admin功能,即“django.contrib.admin”这个app的功能。"django.contrib.admin"的强大在于它提供了一个管理员后台,可以对你添加的model进行增删查改,以及进行很多的定制。

要想让你添加的model能被后台看到并管理起来,首先要在app的admin.py模块中对Model进行注册。

from django.contrib import admin
from polls.models import Poll

admin.site.register(Poll)
对model进行自定义:
from django.contrib import admin
from polls.models import Poll

class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question']}),
        ('Date information', {'fields': ['pub_date']}),
    ]

admin.site.register(Poll, PollAdmin)
  • 外键关联(inlines)
    外键关联最常见的是一对多的情况,django admin提供了inlines这个属性来进行关联:
from django.contrib import admin
from polls.models import Choice, Poll

class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

class PollAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]

admin.site.register(Poll, PollAdmin)

可以改变ChoiceInline的父类,继承自admin.TabularInline,那么可以改变被关联的model显示的样式

  • 定义model显示哪些字段(list_display)

django提供了list_display属性来实现这个功能:

class PollAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question', 'pub_date', 'was_published_recently')
  • list_filter 和 search_fields
    list_filter会在右侧添加一个filter sidebar,可以快捷的进行过滤,而search_fields可以根据传进去的字段进行搜索,都是比较有用的功能。

  • template loader
    template loader是什么?首先它是一个类,这个类规定了如何找到template。在setting.py中,由TEMPLATE_LOADERS规定了一个template loader的元组,默认有两个是打开的:

    django.template.loaders.filesystem.Loader
    django.template.loaders.app_directories.Loader

第一个是说从文件系统中查找template,第二个是说从app的路径中找template。首先django会去由TEMPLATE_DIRS中指定的路径中查找template,如果没有找到,那么就会去各个app中的templates文件夹中查找,django会使用第一个符合条件的tempate。所以,一般都将template分为两个级别,一个是由TEMPLATE_DIRS指定的project级别的template,这个级别的优先被查找,一个就是各个app中的template,这个是第二级别。

Part 3

这一部分主要讲了view的概念和使用。Django中根据请求的路径,会将请求路由给某个view来处理。那这里涉及到两个问题:

1.怎么路由的?
django根据URL进行正则匹配的,比如:

from django.conf.urls import patterns, include, url
from polls import views

urlpatterns = patterns('',
    url(r'^choices/', views.index, name='index',
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

路径符合r'^choices/'的URL就会匹配第一个urlpatten,那么对应的请求就会被路由到views.index()方法来处理。那第二个include()是啥意思呢?它是view的一个集合,表示符合r'^polls/'的URL对继续往下路由,在polls.urls中继续进行匹配。可以在url()方法中指定name参数,即对这个urlpatten进行命名,方便在别的地方引用它。可以在include()中指定namespace参数,在不同的app中进行区分。

2.view怎么来处理的?
记住,view方法,总是返回一个HttpReponse对象,如:

from django.http import HttpResponse
from django.template import RequestContext, loader

from polls.models import Poll

def index(request):
    latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
    template = loader.get_template('polls/index.html')
    context = RequestContext(request, {
        'latest_poll_list': latest_poll_list,
    })
    return HttpResponse(template.render(context))

框架就是这样,跟你约定了很多东西,你要用它就必须遵守。虽然它也提供了很多快捷方式来简化你的代码,但是仍然要理解最底层的东西,否则会迷失了自己。在view中可以做你想做的任何事情,它就是用来实际做事情的,比如访问数据库,访问API,得到数据之后,将数据放在context中,传递给template去进行渲染。

另外就是Part 3还介绍了几个template的tag的用法,比如{% for %}, {% url %},这里重点说一下{% url %},它是和urlpattens中,定义urlpatten的时候,传递给url()的name参数配合使用的,比如{% url 'index' %},或者是 {% url 'detail' poll.id %}

当给urlpatten定义了namespace的时候,使用url tag的时候,可以指定namespace,如{% url 'polls:detail' poll.id %}

Part 4

Part 4主要讲了两个方面的内容,一个是Form的使用,包括template怎么写,view怎么接受form表单的数据,另外一个是介绍了generic view的使用方法。
先说第一个,Form表单的作用是提交用户填写的数据到服务器端,这里template的form怎么写就不废话了,需要注意的是在view中怎么处理表单提交的数据,方法如下:

pk=request.POST['choice']

通过request这个HttpRequest对象拿。另外需要注意的一点是,一般form表单会向服务器提交数据,所以为了重复提交,form表单summit之后,都会重定向到另外一个url,而不是停留在form这个页面,那么此时返回的对象就不是HttpResponse了,而是HttpResponseRedirect对象,后者应该是前者的子类。

之后就是介绍了django中generic view的使用方法,先说generic view存在的意义:在一般的web开发中,都有一个非常常见的模式,就是从数据库中得到数据,然后到template中展现出来。django对这种模式做了封装,就是generic view,提供了ListView和DetailView等类做这些处理,具体怎么用,就不多说了,用法见文档generic view

Part 5

Part 5介绍的是django的单元测试,这里就不细说了,不过那里面说的,why you need to create tests 可谓是经典。

Part 6

Part 6 很简单,介绍了静态文件的使用方法,主要是介绍了AppDirectoriesFinder的原理,即在setting.py中,可以在STATICFILES_FINDERS中指定一些静态文件的查找方法,AppDirectoriesFinder就是其中一个,而且是默认的,它会到每一个app的static目录中查找静态文件。

Django--28Django官版UI细节调整及使用simpleui换肤 Django会提供pythonmanage.pycollectstatic,把整个项目所有的静态资源(还包括js、css),归集到一起(STATIC_ROOT)。collectstatic时,会扫描STATICFILES_DIRS下的静态资源,以及所有注册的app下的静态资源。STATICFILES_DIRS目录是全局的静态资源配置,可以指定每个app的静态资源,和共享的静态资源;开发时,分app开发,每个app下可能有静态资源,还有全局的静态资源怎么办?静态文件的独立性,能被独立部署到CDN。... 阅读详情

相关推荐

告别虚拟机!在Windows上用WSL+VSCode搞定ArduPilot开发环境(保姆级避坑指南)

本文提供了一份详细的保姆级指南,介绍如何在Windows上使用WSL和VSCode搭建高效的ArduPilot开发环境,告别虚拟机性能损耗。从WSL安装、VSCode配置到ArduPilot固件编译和调试技巧,涵盖开发全流程中的关键步骤和常见问题解决方案,帮助无人机开发者快速构建专业级开发环境。

weixin_42543046的博客 461

django基本命令-启动、新建

1、新建一个django project django-admin.py startproject project_name 特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试 2、新建app 要先进入项目目录下,cd project_name 然后执行下面的命令(下同,已经在项目目录下则不需要 cd project_name) python manage.py startapp app_name 或 django...

weixin_40547993的博客 2万+

LPC2124定时器实现跑马灯

文章目录一、keil 4新建工程 一、keil 4新建工程 1、Create New Project,注意,最好添加进一个新建好的文件夹里,keil不会帮你新建。 2、添加设备类型:NXP目录下的LPC2124 3、选择启动文件Startu.s 4、new 一个file,保存命名为.c文件 5、添加进project里,右击,add 选中,添加 6、设置编译输出.hex文件 ...

qq_37937830的博客 5753

Django框架之介绍与启动

因为短学期需要用Django框架来做个NLP的系统用于展示,因此记录一下学习到的相关内容,也是为了到时候需要使用能够快速上手,大都是从b站上看来的。 【全网最全】最新Django教程全套,超详细讲解 感觉讲的还是蛮清楚的。不够我用的版本和他不同,我用的是Django==3.2.13。不过目前还没发现有不兼容的地方。Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。 Django的MTV模式: M模型层:负责与数据库交互 T模板层:负责呈现内容

学习笔记 1099

浮点数精度陷阱全解析:从IEEE 754到深度学习部署选型

在计算机数值计算中,浮点数是表示带小数数字的标准方式,但它的存储规则决定了精度和边界天生存在限制。许多开发者都曾遭遇过0.1+0.2不等于0.3的尴尬,或是模型训练中loss变成NaN的困扰,这些问题的根源往往指向IEEE 754标准中的规格化、非规格化表示及舍入规则。理解浮点数的底层原理,不仅能避开直接的比较判断陷阱,还能指导我们在不同场景下做出合理的技术选型。从C语言的printf到Python的repr,从嵌入式串口打印到深度学习中的FP32、FP16、BF16、TF32格式,浮点数知识贯穿底层开发和

weixin_34314962的博客 463

速腾Helios-16P使用Lego-loam实时构建点云地图(二)——Lego-loam的编译与运行

不兼容的问题,打开lego-loam的~/lego-loam_ws/src/LeGO-LOAM/LeGO-LOAM/src下的4个源码文件,搜索/camera_init,将所有/camera_init改成camera_init,也就是去掉斜杠,这样再回到工作空间重新编译lego-loam。3、速腾16线激光雷达RS-16 ----- 3D建图算法LeGO-LOAM的使用(Ubuntu18.04 + ROS Melodic)_速腾16线 lego loam_杰尼君的博客-优快云博客。

qq_59475883的博客 2568

Django学习笔记之——Start

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33816946的博客 161

头歌 操作系统 课堂练习2.1:外部中断 第2关:第一次时钟中断

将答案0x796c输入到workspace/mushixun/恢复点的地址.txt中的括号里即可,随后使用kill命令防止对第三关的环境造成影响。

Yinfrey的博客 6085

django- startapp

在Django框架中,startapp命令是用于创建一个新的Django应用的工具。Django应用是Django项目中的一个独立组件,它通常包含模型(models)、视图(views)、模板(templates)和静态文件(static files)等组成部分。通过创建应用,你可以将项目的不同部分模块化,使其更易于管理和扩展。以下是关于startapp。

a18861856219的博客 883

云计算学习——5G网络技术

华为eNSP网络设备模拟器的基础安装及简单使用

qq_42520799的博客 1445

【PLC】三菱PLC控件安装疑难解析:Error Number:-119的全面解决方案

本文针对三菱PLC控件安装过程中常见的Error Number:-119错误,提供了深度解析与实战解决方案。该错误通常源于Windows系统权限限制或文件冲突。文章从理解错误本质入手,逐步介绍了以管理员身份运行、手动注册DLL文件、采用新版环境搭配旧版控件的黄金组合以及系统环境修复等四大招法,帮助用户彻底解决这一安装难题,确保工控软件稳定运行。

jj890的博客 496

Django安装与启动

Django简介 Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django 是一个开放源代码的 Web 应用框架,由 Python 写成。 Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。 Django的安装 打开cmd命令窗口,输入命令 pip install django 这里我已经安装好了,假如没有安装的话,会显示安装的进度条,安装成

weixin_56319791的博客 1683

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ElasticSearch 报错集锦及解决方法

在笔者看来,无非就是要把解压后的 elasticsearch 放到,创建好的 用户目录下,所以就不会出现可能的权限问题,所以就不会老是报找不到包,其实是权限不够,当然这里笔者为了省事,直接将其放到一个普通用户目录下,当然这个固定好的专门为 elasticsearch 创建的一个用户。修改/etc/security/limits.conf文件。/etc/sysctl.conf文件末尾添加。输入如下命令,让配置立即生效。

Muxiu 2430

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python实现保序加密算法:原理、代码与实战调优

在数据安全和隐私保护领域,加密技术是确保敏感信息机密性的核心手段。传统加密算法如AES或RSA会将数据转换为不可比较的随机密文,这在需要基于密文进行排序或范围查询的场景中面临挑战。保序加密作为一种特殊的加密方案,其核心原理在于构建一个从明文空间到密文空间的单调递增映射,使得密文间的比较结果与原始明文顺序一致。这项技术的核心价值在于,它允许数据库或服务端在不解密数据的情况下,直接对加密字段执行‘大于’、‘小于’等范围查询和排序操作,从而在保护数据隐私的同时,维持了系统的查询功能。其典型应用场景包括加密数据库中

weixin_33801856的博客 413

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Django学习--基础篇(一)

项目- app,用户管理【表结构,函数,HTML模板】- **注意:**一般情况下,一个项目创建一个app即可。在Pycharm的终端输入命令python manage.py startapp [app名称]

2301_77457568的博客 1076

Django Start

安装Django easy_install django pip install Django wget django_url tar xzvf Django-X.Y.tar.gz python setup.py install 测试安装是否成功   Django连接远程Mysql 第一步配置setting.py中的DATABASES,令数据库的HO

认真工作 快乐生活 416

Django创建app应用和admin模块

目录创建app应用使用admin模块 创建app应用 app是什么? 用过IDEA的都知道,它创建好项目一个项目,在里面是不能再创建项目的,而只能创建我们的模块,所以就是一个项目底下有多个模块,而Django里面的app就相当于模块一样,一个Django项目底下有多个app,而它的功能就像java中的实体类,它一个app就代表了这个实体类的所有功能 它每个文件的意思在思维导图上都写的很清楚了 我...

阳某的博客 4022

django 中OneToOneField 与 inlines 配合使用

环境:django v2.0.4 需求:数据库设计使用2张表存储 Car 和 Engine,但是在 django admin 中需要在一个页面进行编辑。 核心技术是StackedInline(纵向嵌入)/TabularInline(横向嵌入),这样就可以把相关 model组成一个编辑界面。 StackedInline与OneToOneField同时使用,代码如下: #models....

池塘 4236

Django start

1、创建项目 创建后运行项目,默认页面为http://127.0.0.1:8000/,打开后: 2、视图和url配置 views.py from django.http import HttpResponse from django.shortcuts import HttpResponse, render def login(request): return render(r...

imxlw00的专栏 237

Django之命名空间(namespace)

概念: 命名空间(namespace):用来表示标识符的作用范围 一个标识符可以在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。这样,在一个新的命名空间中可定义任何标识符,它们不会与任何已有的标识符发生冲突。 应用场景: 当一个项目中包含多个app,每个app中都有命名相同的标识符时,为了能够使每次访问都能得到想要的结果(访问指定变量),就需要使用namespace。 例子: 1、创建...

J_wb49的博客 4383

Django admin管理工具TabularInline表格内联

是 Django Admin 中的一个内联模型选项,用于在父模型的编辑页面中以表格形式显示关联的子模型对象。下面是对以表格的形式显示子模型对象。每个子模型对象将以一行的形式展示,显示相关字段的值。:通过,您可以在父模型的编辑页面中同时编辑和新增与之关联的子模型对象。您可以通过表格的行来编辑现有子模型对象,也可以通过表格底部的空白行来新增新的子模型对象。:如果在子模型中还有其他的外键关联模型,您可以使用嵌套的来进一步显示和编辑这些关联的模型对象。:您可以通过设置extra属性来指定要显示的初始表格行数。

u010674101的专栏 2642

【Django】admin管理工具TabularInline类用法详解

【Django】admin管理工具TabularInline类用法详解 TabularInline类用于在A页面上编辑B表的字段,举例说明,如果models.py中有Staff、Job两个model: from django.db import models class Staff(models.Model): name = models.CharField(max_length=10) class Job(models.Model): staff = models.ForeignK

xmy7007的博客 1084

为django-import-export 增加 inlines功能

待定 转载于:https://my.oschina.net/chaleaoch/blog/1586477

chengziling1175的博客 414

01_Django学习:快速入门

Django框架介绍 什么是框架? 软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品 框架的功能类似于 基础设施 ,提供并实现最为 基础的软件架构和体系 通常情况下依据框架来实现更为复杂的业务程序开发 二个字,框架就是程序的 骨架 Python 中常见的框架有哪些? 大包大揽 Django 被官方称之为完美主义者的Web框架 力求精简 web.py 和 Tornado 新生代微框架 Flask 和 Bottle Django 框架介绍 Django 是一个高级的Python Web

sl963216757的博客 446

Django | 一文简单搞懂Django中的fieldsets和add_fieldsets

在 Django 中,fieldsets 是一种用于定制管理后台表单的选项。在 Django 的 ModelAdmin 类中,我们可以定义 fieldsets 属性,它是一个包含元组或列表对象的序列,每个元素都表示一个分组。每个分组由一个标题和一个包含字段名称的集合组成。

猫天意的博客 1666
上一篇: Ceilometer Distributed Alarm
下一篇: Django学习小记[2] —— Model
hackerain
博客等级 码龄16年 753粉丝 220原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值