Django(复习篇)

news2024/11/16 21:36:51
项目创建
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 pymysql
    pymysql.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 = "用户"
    pass
    
class 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 = 1
    model = 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=20
    print(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):
        pass
    
urlpatterns = [
    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 = User
    paginate_by = 2     # 3 user/per page
    def 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 session
        get_session_name = request.session.get("sname","")
        # set session
        request.session["sname"] = "value"
        return super(TestListView, self).get(*args,**kwargs)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1200874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低价寄快递寄件微信小程序 实际商用版 寄快递 低价寄快递小程序(源代码+截图)前后台源码

盈利模式 快递代下CPS就是用户通过线上的渠道&#xff08;快递小程序&#xff09;&#xff0c;线上下单寄快递来赚取差价&#xff0c;例如你的成本价是5元&#xff0c;你在后台比例设置里面设置 首重利润是1元&#xff0c;续重0.5元&#xff0c;用户下1kg的单页面显示的就是6元…

2023.11.13 hive数据仓库之分区表与分桶表操作,与复杂类型的运用

目录 0.hadoop hive的文档 1.一级分区表 2.一级分区表练习2 3.创建多级分区表 4.分区表操作 5.分桶表 6. 分桶表进行排序 7.分桶的原理 8.hive的复杂类型 9.array类型: 又叫数组类型,存储同类型的单数据的集合 10.struct类型: 又叫结构类型,可以存储不同类型单数据的集合…

帧同步的思想与异步FIFO复位

02基于FDMA三缓存构架_哔哩哔哩_bilibili 图像从外部传输进来的时候&#xff0c;会产生若干延迟&#xff0c;可能会出现各种各样的问题&#xff08;断帧等&#xff09;&#xff0c;此时可以通过VS信号清空FIFO进行复位。 这个过程中的复位信号可能需要拓展&#xff0c;这是因为…

某手游完整性校验分析

前言 只是普通的单机手游&#xff0c;广告比较多&#xff0c;所以分析处理了下&#xff0c;校验流程蛮有意思的&#xff0c;所以就分享出来了 1.重打包崩溃处理 样本进行了加固&#xff0c;对其dump出dex后重打包出现崩溃 ida分析地址发现为jni函数引起 利用Xposed直接替换…

云计算——ACA学习 云计算架构

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 一.云计算架…

基于蜻蜓算法优化概率神经网络PNN的分类预测 - 附代码

基于蜻蜓算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于蜻蜓算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于蜻蜓优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

互联网大厂招兵买马开发鸿蒙应用,移动开发的春天又来了?

日前&#xff0c;美团拟开发鸿蒙系统APP的多个相关岗位正招聘开发人员引发业内关注。事实上&#xff0c;鸿蒙开发者已经成为京东、WPS、凤凰新闻、微博等互联网大厂争相招聘的人才&#xff0c;且招聘岗位众多。也就是说&#xff0c;这些公司正在加快鸿蒙化开发&#xff0c;为鸿…

思维模型 目标效应

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。明确目标&#xff0c;激发内在动机。 1 目标效应的应用 1.1 目标效应在教育领域的应用-棉花糖实验 美国斯坦福大学心理学系的教授米歇尔&#xff08;Walter Mischel&#xff09;曾经进行了…

vue-常用指令

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容-常用指令 目录 常用指令 1、v-cloak 2、数据绑定指令 3、v-once 4、v-bind&#xff08;重点&a…

C++ 图解二叉树非递归后序 + 实战力扣题

145.二叉树的后序遍历 145. 二叉树的后序遍历 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> postorderTraversal(TreeNode* root) {stack<TreeNode*> st;vector<int> vec;if(root NULL) return vec;TreeNode* guard root…

Golang 字符串处理汇总

1. 统计字符串长度&#xff1a;len(str) len(str) 函数用于统计字符串的长度&#xff0c;按字节进行统计&#xff0c;且该函数属于内置函数也不用导包&#xff0c;直接用就行&#xff0c;示例如下&#xff1a; //统计字符串的长度,按字节进行统计: str : "golang你好&qu…

【ATTCK】MITRE Caldera -前瞻规划器

CALDERA是一个由python语言编写的红蓝对抗工具&#xff08;攻击模拟工具&#xff09;。它是MITRE公司发起的一个研究项目&#xff0c;该工具的攻击流程是建立在ATT&CK攻击行为模型和知识库之上的&#xff0c;能够较真实地APT攻击行为模式。 通过CALDERA工具&#xff0c;安全…

有奖 | Python 开发者 2023 年度调查

你好&#xff0c;我是 EarlGrey&#xff0c;一名双语学习者&#xff0c;会一点编程&#xff0c;目前已翻译出版《Python 无师自通》、《Python 并行编程手册》等书籍。 点击上方蓝字关注我&#xff0c;持续接收优质好书、高效工具和赚钱机会&#xff0c;一起提升认知和思维。 1…

2023年【电工(初级)】考试内容及电工(初级)复审模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 电工&#xff08;初级&#xff09;考试内容是安全生产模拟考试一点通总题库中生成的一套电工&#xff08;初级&#xff09;复审模拟考试&#xff0c;安全生产模拟考试一点通上电工&#xff08;初级&#xff09;作业手…

C++ Qt 学习(六):Qt http 编程

1. http 基础 HTTP 基础教程C Web 框架 drogonoatpp 2. C Qt 用户登录、注册功能实现 login_register.h #pragma once#include <QtWidgets/QDialog> #include "ui_login_register.h" #include <QNetworkReply>class login_register : public QDialog…

【MySQL】使用C/C++访问MySQL

文章目录 一. 环境准备1. 方法一2. 方法二 二. MySQL接口介绍1. 初始化/连接/关闭2. 执行操作3. 查找操作 结束语 本篇环境是云服务器Centos上的MySQL 版本; 一. 环境准备 使用C/C访问MySQL&#xff0c;首先需要MySQL的开发者库 这里提供两种方法&#xff1a; 1. 方法一 …

【Unity每日一记】“调皮的协程”,协程和多线程的区别在哪里

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

【MySQL系列】 第二章 · SQL(下)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

JSP运行环境搭建

将安装JSP引擎的计算机称作一个支持JSP的Web服务器。这个服务器负责运行JSP&#xff0c;并将运行结果返回给用户。 JSP的核心内容之一就是编写JSP页面,JSP页面是Web应用程序的重要组成部分之一。一个简单Web应用程序可能只有一个JSP页面,而一个复杂的Web应用程序可能由许多JSP…

【操作系统】考研真题攻克与重点知识点剖析 - 第 3 篇:内存管理

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…