当前位置: 首页 > 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;并在服…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...