当前位置: 首页 > news >正文

Django(复习篇)

项目创建
1. 虚拟环境
python -m venv my_env
​
cd my_env
activate/deactivate
​
pip install django
​2. 项目和app创建
cd mypros
django-admin startproject Pro1
django-admin startapp app1
​3. settings配置INSTALLED_APPS【app1"】TEMPLATES【 'DIRS': [os.path.join(BASE_DIR,"templates")]】LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
MVT Demo
urls --> app.views --> templates/test.html
​
### urls.py 
from app1.views import test1
urlpatterns = [...,path("/test1",test1)
]
​### app1.views.py
def test1(request):return render(request,"app1/test1.html",context={"msg":"hello world"})
​### templates/test1.html
# TEMPLATES【 'DIRS': [os.path.join(BASE_DIR,"templates")]】
# "app1/test1.html"
new >> Pro1/templates
new >> Pro1/templates/app1/test1.html
{{ msg  }}

ORM
### install mysql dependency
pip install mysqlclient 【recommend】
pip install pymysql【app/__init__.py:import pymysqlpymysql.install_as_MySQLdb()
】
​### settings.py
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',"NAME":"test1","HOST":"localhost""PORT":3306,"USER":"root","PASSWORD":"root",}
}
​### mysql
mysql -uroot -proot
show databases;
create database test1;
​### orm
class Users(models.Model):# id 自动生成name = models.CharField(max_length=255,verbose_name="用户名")age = models.IntegerField(verbose_name="用户年龄")class Account(models.Model):KIND_CHOICE = ((1,"普通用户"),(2,"VIP用户"),)# id 自动生成balance = models.DecimalField(max_digits=10,decimal_places=2,verbose_name="账户余额")kind = models.IntegerField(choices=KIND_CHOICE,verbose_name="账户类型")user = models.ForeignKey(to="app1.Users",verbose_name="账户用户名",on_delete=models.CASCADE)
​### migrate
python manage.py makemigrations
python manage.py migrate

Admin Manger
### simple register model(admin.py)
from django.contrib import admin
from .models import Users,Account
admin.site.register(Users)
admin.site.register(Account)
​### create super user: admin manage-user(Terminal)
python manage.py createsuperuser### admin page show:verbose_name(models.py)
class Users(models.Model):class Meta:verbose_name = verbose_name_plural = "用户"passclass Account(models.Model):class Meta:verbose_name = verbose_name_plural = "用户账户"pass
 
### admin page show: list_display(admin.py)
# @admin.register(Users)
class UsersAdmin(admin.ModelAdmin):list_display = ("id","name","age")
​
@admin.register(Account)
class AccountAdmin(admin.ModelAdmin):list_display = ("id","user","balance","kind")# admin.site.register(Users)
# admin.site.register(Account)
admin.site.register(Users,UsersAdmin)

### admin page show: app verbose name(apps.py)
class App1Config(AppConfig):verbose_name = "我的应用1"pass

 

### admin page show:model object str name
class Users(models.Model):def __str__(self):return "%s"%(self.name)pass
​
class Account(models.Model):def __str__(self):return "%s账户"%(self.user.name)pass

### admin page show:records ordering(admin.py)
class UsersAdmin(admin.ModelAdmin):ordering = ["id"]   # ordering = ["-id"]pass

### admin page show:fieldsets of add form(admin.py)
class AccountAdmin(admin.ModelAdmin):fieldsets = (("账户信息", {"description":"请输入用户信息","fields":("kind","balance")}),("所有者",{"description": "请输入用户所有者","fields":("user",)}))

 

### admin page show:search fields(admin.py)
search_fields = ["name"]
 
### admin page show:Tabular inline Edit(admin.py)
class AccountInline(admin.TabularInline):extra = 1model = Account
​
class UsersAdmin(admin.ModelAdmin):inlines = [AccountInline,]
 
### admin page show:custom css style (admin.py)
# settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
​
# admin.py
class UsersAdmin(admin.ModelAdmin):class Media:css = {"all": ("/static/css/admin/admin_user.css",),}pass

Template
{{ msg }}
{{ user.name }}
​
{% csrf_token %}
​
{% for user in users %}{% if user.age > 18 %}<p>adult</p>{% else %}<p>minor</p>{% endif %}
{% end for %}
​
{% for key,value in dict.items %}<p>{{ key }}:{{ value }}</p>
{% endfor %}
​
{{ data | default:"<p style='color:red'>还没有任何数据哦</p>" }}
{{ content | slice:":20" }}
{{ getDate | date:"Y/m/d" }}{% extends "base.html" %}{% block main %}
{% endblock %}
URL
### re_path:query_param、named-group
from django.urls import path,re_path
urlpatterns = [path("index",test,name="index"),re_path(r"^app1/(?P<page>[1-9]+)$",test1),
]
def test(request):# localhost:8000/index?name=joden&age=20print(request.GET.dict)print(request.GET.get("name"))def test1(request,page):# re_path page group => param: page  print("page:",page)print(request.GET.dict())
​
​### url name
re_path(r'app1/(?P<page>[1-9]+)$', test1, name="index"),
​
def test(request):print(reverse("index",kwargs={"page":2}))
​### url namespace
from django.urls import include
path("app1",include("app1.urls"))
# app1/urls.py
app_name = "app1" 
re_path(r'page/(?P<page>[1-9]+)$', test1, name="index"),
# views.py
reverse("app1:index",kwargs={"page":2}) 
CBV
CBV:Class Basic View
https://docs.djangoproject.com/zh-hans/4.1/ref/class-based-views/### View
from django.view import View
class TestView(View):def get(self,request,*args,**kwargs):return render(request,"app1/test1.html")def post(self,request,*args,**kwargs):passurlpatterns = [path("app",TestView.as_view()),
]### TemplateView
from django.views.generic.base import TemplateView
class TestTemplateView(TemplateView):tempate_name = "app1/test1.html"def get_context_data(self,**kwargs):super().get_context_data(self,**kwargs)context = {"users":Users.objects.all(),}return context
​
​
### ListView
from django.views.generic.list import ListView
class TestListView(ListView):template_name = "app1/test1.html"model = Userpaginate_by = 2     # 3 user/per pagedef get_context_data(self,**kwargs):context = super().get_context_data(self,**kwargs)print(self.get_paginator(self.object_list,self.paginate_by).num_pages)return context{% for user in object_list %}
{% endfor %}

Cookie and Session
### cookie
class TestListView(ListView):def get(self,request,*args,**kwargs):# get cookie(request)request.get_cookie("name")response = super(TestListView, self).get(*args,**kwargs)# set cookie(response)response.set_cookie("name","joden")return response
​### session
class TestListView(ListView):def get(self,request,*args,**kwargs):# get sessionget_session_name = request.session.get("sname","")# set sessionrequest.session["sname"] = "value"return super(TestListView, self).get(*args,**kwargs)

相关文章:

Django(复习篇)

项目创建 1. 虚拟环境 python -m venv my_env ​ cd my_env activate/deactivate ​ pip install django ​2. 项目和app创建 cd mypros django-admin startproject Pro1 django-admin startapp app1 ​3. settings配置INSTALLED_APPS【app1"】TEMPLATES【 DIRS: [os.pat…...

MySQL里对时间的加减操作及常用语法

查询当前时间&#xff1a; select NOW(); //2023-11-14 11:36:03 select CURDATE(); //2023-11-14 SELECT CURTIME(); //11:36:03日期加日期&#xff1a; select date_add(NOW(), interval 1 year); //加1年 select date_add(NOW(), interval 1 month); …...

『MySQL快速上手』-⑨-复合查询

文章目录 1.基本查询回顾2.多表查询案例3.自链接案例4.子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 在from子句中使用子查询5.合并查询5.1 union5.2 union all6.表的内连和外连6.1 内连接6.2 外连接6.2.1 左外连接6.2.2 右外连接...

高并发架构设计(三大利器:缓存、限流和降级)

引言 高并发背景 互联网行业迅速发展&#xff0c;用户量剧增&#xff0c;系统面临巨大的并发请求压力。 软件系统有三个追求&#xff1a;高性能、高并发、高可用&#xff0c;俗称三高。三者既有区别也有联系&#xff0c;门门道道很多&#xff0c;全面讨论需要三天三夜&#…...

ElasticSearch7.x - HTTP 操作 - 文档操作

创建文档(添加数据) 索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数 据库中的表数据,添加的数据格式为 JSON 格式 向 ES 服务器发 POST 请求 :http://192.168.254.101:9200/shopping/_doc 请求体内容为: {"title":"小…...

[数据结构大作业]HBU 河北大学校园导航

校园导航实验报告 问题描述&#xff1a; 以我校为例&#xff0c;设计一个校园导航系统&#xff0c;主要为来访的客人提供信息查询。系统有两类登陆账号&#xff0c;一类是游客&#xff0c;使用该系统方便校内路线查询&#xff1b;一类是管理员&#xff0c;可以使用该系统查询…...

立体库堆垛机控制程序手动功能实现

手动操作功能模块 手动前后保护锁 *************提升手动程序段 手动上升&#xff0c;下降保护锁 **********货叉手动程序段...

git commit提交报错

git commit -m 名字’时报一下错误&#xff1a; [FAILED] npm run lint-staged:js [FAILED] [FAILED] npm run lint-staged:js [FAILED] [SUCCESS] Running tasks for staged files..npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Program Files\nodejs\node_c…...

OpenSIPS自定义统计项目

有朋友问&#xff0c;怎么统计ops每日的呼叫量 这就是需要自定义统计项目 我第一感觉是dialog模块 后来又查了下资料&#xff0c;statistics模块更合适&#xff0c;Kamailio也有同名模块...

python数据结构与算法-02_数组和列表

线性结构 本节我们从最简单和常用的线性结构开始&#xff0c;并结合 Python 语言本身内置的数据结构和其底层实现方式来讲解。 虽然本质上数据结构的思想是语言无关的&#xff0c;但是了解 Python 的实现方式有助于你避免一些坑。 我们会在代码中注释出操作的时间复杂度。 数…...

计算机网络基础知识-网络协议

一:计算机网络层次划分 1. 网络层次划分 2. OSI七层网络模型 1)物理层(Physical Layer):及硬件设备,物理层确保原始的数据可在各种物理媒体上传输,常见的设备名称如中继器(Repeater,也叫放大器)和集线器; 2)数据链路层(Data Link Layer):数据链路层在物理层提…...

【Vue3】scoped 和样式穿透

我们使用很多 vue 的组件库&#xff08;element-plus、vant&#xff09;&#xff0c;在修改样式的时候需要进行其他操作才能成功更改样式&#xff0c;此时就用到了样式穿透。 而不能正常更改样式的原因就是 scoped 标记。 scoped 的渲染规则&#xff1a; <template>&l…...

Python 邮件发送(163为例)

代码 import smtplib import socket from email.mime.text import MIMEText from email.header import Headerdef send_mail():# 设置发件人、收件人、主题、内容from_address 18847097110163.comto_address 963268595qq.comsubject test emailbody hahahhahaha# SMTP邮件…...

BlendTree动画混合算法详解

【混合本质】 如果了解骨骼动画就知道&#xff0c;某一时刻角色的Pose是通过两个邻近关键帧依次对所有骨骼插值而来&#xff0c;换句话说就是由两个关键帧混合而来。 那么可不可以由多个关键帧混合而来呢&#xff1f;当然可以。 更多的关键帧可以来自不同的动画片段&#xf…...

2013年01月16日 Go生态洞察:并发不是并行

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

CRM销售管理软件哪个好,该如何选择?(一)

销售团队对于任何一家企业来说都是重中之重&#xff0c;因此我们说一款可以辅助销售人员维护好客户的工具是企业发展的刚需。那么CRM销售管理软件哪个好&#xff0c;该如何选择&#xff0c;从从哪里方面去入手&#xff1f;来看看这两点吧&#xff1a; 功能方面 完整的功能可以…...

Django路由层解析

路由层(urls.py) Django的路由层是用于将URL映射到视图函数的机制。它用于确定请求URL&#xff08;HTTP请求&#xff09;应该被哪个视图函数处理。 Django的路由层包括两个部分&#xff1a; URL模式&#xff1a;匹配请求URL&#xff0c;决定应该使用哪个视图函数来处理请求。UR…...

高教社杯数模竞赛特辑论文篇-2023年A题:定日镜场的输出功率优化(附获奖论文及MATLAB代码实现)(中)

目录 6.4定日镜平均输出热功率优化模型的求解 6.5问题二求解结果 6.6 结果分析...

libusb获取Windows设备实例路径DevicePath

libusb 当前版本&#xff08;1.0.26&#xff09;libusb.h 头文件提供的接口似乎没有办法获取 Windows 平台相关的设备实例路径&#xff0c;其形如&#xff1a; \\?\usb#vid_04ca&pid_7070#5&20d34a76&0&6#{a5dcbf10-6530-11d2-901f-00c04fb951ed} 只是提供了…...

File Upload

File Upload File Upload&#xff08;文件上传&#xff09;&#xff0c;Web应用程序的安全漏洞&#xff0c;如果应用程序未能正确验证和限制用户上传文件的类型、大小和内容。攻击者可以通过构造特制的文件来绕过这些验证&#xff0c;上传包含恶意代码的文件&#xff0c;并在服…...

不只是CTF:用Kali+Pwntools+GDB-Peda搭建你的第一个漏洞分析实验台

从CTF到实战&#xff1a;构建专业级二进制漏洞分析实验环境 在安全研究领域&#xff0c;CTF比赛中的Pwn挑战只是冰山一角。真正的价值在于将这些技能应用于现实世界的漏洞分析和利用。本文将带你搭建一个专业级的本地漏洞分析实验环境&#xff0c;这个环境不仅能应对CTF题目&a…...

关于2026年6月14日PMI认证考试的报名通知

尊敬的各位考生&#xff1a; 经PMI和中国国际人才交流基金会研究决定&#xff0c;中国大陆地区2026年第二期PMI认证考试6月14日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文&#xff0c;知悉考试安排及注意事项&#xff0c;并遵守考试有关规定。 一、 报名注…...

六轴关节式机械臂SW的详细三维模型

六轴关节式机械臂SW详细三维模型 自重10kg&#xff0c;末端负载5kg&#xff0c;重复定位精度0.05mm 有详细装配体和零部件&#xff0c;可用于设计参考、加工制造 有特征参数&#xff0c;可以进行编辑学习&#xff0c;非常适合DIY桌面型机械臂拆开快递箱的那一刻&#xff0c;金属…...

iOS高级开发工程师技术体系与民航行业实践深度解析

第一章 iOS开发技术核心体系 1.1 Swift与Objective-C双语言生态 现代iOS开发需要掌握两种核心语言的技术特点: // Swift类型安全示例 enum FlightStatus {case scheduled, departed, landed, canceled }var currentStatus: FlightStatus = .scheduled// 编译器会阻止非法状…...

别再只杀进程了!挖矿病毒XMRig的完整清除与溯源指南(附config.json钱包地址分析)

深度对抗XMRig挖矿病毒&#xff1a;从清除到溯源的实战手册 发现任务管理器里反复出现的xmrig.exe进程&#xff1f;别急着再次点击"结束任务"——这就像用创可贴处理骨折&#xff0c;治标不治本。作为处理过数百起挖矿事件的安全工程师&#xff0c;我总结了一套从内…...

P1103 书本整理【洛谷算法习题】

P1103 书本整理 网页链接 P1103 书本整理 题目描述 Frank 是一个非常喜爱整洁的人。他有一大堆书和一个书架&#xff0c;想要把书放在书架上。书架可以放下所有的书&#xff0c;所以 Frank 首先将书按高度顺序排列在书架上。但是 Frank 发现&#xff0c;由于很多书的宽度不…...

新手友好!Qwen3-ASR-1.7B镜像使用全攻略:从安装到实战

新手友好&#xff01;Qwen3-ASR-1.7B镜像使用全攻略&#xff1a;从安装到实战 1. 为什么选择Qwen3-ASR-1.7B&#xff1f; 语音识别技术正在改变我们处理音频内容的方式。Qwen3-ASR-1.7B作为阿里云通义千问团队开发的开源语音识别模型&#xff0c;在识别精度和语言支持方面表现…...

OpenMS全面解析:开源质谱数据分析平台的实战指南

OpenMS全面解析&#xff1a;开源质谱数据分析平台的实战指南 【免费下载链接】OpenMS The codebase of the OpenMS project 项目地址: https://gitcode.com/gh_mirrors/op/OpenMS OpenMS是一款功能全面的开源质谱数据分析平台&#xff0c;专为液相色谱-质谱(LC-MS)数据管…...

重生之我用 AI 复活了我的同事

阅读本文大概需要 2.8 分钟。在写这篇文章之前先解答上篇文章评论区反映的两个问题&#xff1a;第一个问题&#xff0c;有人读完文章说&#xff0c;张哥&#xff0c;那以后是用 AI 还是不用呢&#xff1f;当然要用了&#xff0c;而且是鼓励大家全面使用。我文章本意是 AI 发展之…...

Jetson平台高温警告静默指南:深入解析notify_disable与nvpmodel_indicator.py

1. 为什么需要关闭Jetson的高温警告 当你把Jetson设备用在嵌入式系统或者工业自动化场景时&#xff0c;那个频繁弹出的"Caution - Hot surface. Do not touch"警告可能会让人抓狂。我去年在一个智能监控项目上就遇到过这种情况——设备在户外机箱里持续运行&#xff…...