2024--Django平台开发-Django知识点(三)

  • day03 django知识点
    • 项目相关
    • 路由相关 urls.py
    • 视图相关 views.py
    • 模版相关 templates
    • 资源相关 static/media

1.项目相关

  • 新项目
    • 开发时,可能遇到使用其他的版本。
    • 虚拟环境
  • 老项目
    • 打开项目
    • 虚拟环境

1.1 关于新项目

1.系统解释器+命令行【学习】

C:/python38
	- python.exe
	- Scripts
		- pip.exe
		- pip3.8.exe
		- django-admin.exe
	- Lib
		- re.py
		- site-pakages
			- django
			
C:/python39
	- python.exe
	- Scripts
		- pip.exe
		- pip3.9.exe
		- django-admin.exe
	- Lib
		- re.py
		- site-pakages
			- django
>>>C:/python39/Scripts/pip  install django
  • django项目

    >>>E:
    >>>cd code
    >>>C:/python39/Scripts/django-admin  startproject  mysite
    
  • 目录结构

    E:\code\mysite
    	- mysite
    		- urls.py     URL和函数对应关系
    		- wsgi.py     底层请求处理入口【同步】
    		- asgi.py     底层请求处理入口【异步】
    		- settings.py 配置文件(内置配置文件global_settings假设200项配置 + 用户3项配置 =201配置)
    	- manage.py       [管理项目]
    
  • 运行项目

    >>>cd mysite
    >>>C:\python39\python manage.py runserver 
    
  • 对应关系 urls.py

    from django.http import HttpResponse
    
    def demo(request):
    	return HttpResponse("OK")
    
    urlpattens = [
    	path("demo/",demo),
    ]
    

2.虚拟环境+命令行【线上部署】

C:\python39
	- python.exe
	- Scripts
		- pip.exe
		- pip3.9.exe
		- virtualenv.exe
	- Lib
		- re.py
		- site-pakages
>>>C:\python39\pip install virtualenv
a.创建虚拟环境
>>>C:\python39\Scripts\virtualenv  F:\envs\x1  --python=python3.9
F:\envs\x1
	- python.exe
	- Scripts
		- pip.exe
		- pip3.9.exe
		- activate.exe
		- django-admin.exe
	- Lib
		- site-pakages
			- django
			- ..
b.激活虚拟环境
>>>F:
>>>cd F:\envs\x1\
>>>activate.exe
c.激活虚拟环境
(x1)>>>pip install django
(x1)>>>pip install django==3.2
d.创建项目
(x1)>>>django-admin startproject mysite

3.虚拟环境+Pycharm【最新django】

E:\PycharmProjects\day002
E:\PycharmProjects\day002\.venv

注意:第2期,都是基于这种方式去创建项目。

4.虚拟环境+Pycharm【老django】

本质:

  • 虚拟环境
  • 安装老版本django
  • 基于django-admin 创建项目
  • 在Pycharm中配置:项目 + 环境 => 绑定
a.虚拟环境

在这里插入图片描述

b.安装老版本django
(.venv) E:\PycharmProjects\day003>pip install django==3.2
c.创建django项目
(.venv) E:\PycharmProjects\day003>django-admin startproject day003
E:\PycharmProjects\day003\day003
	- day003
		...
	- manage.py
(.venv) E:\PycharmProjects\day003>django-admin startproject day003 .
E:\PycharmProjects\day003
	- day003
		...
	- manage.py
d.Pycharm配置

在这里插入图片描述

小结

  • 系统解释器 和 虚拟环境

  • 命令行【线上部署】

    • 安装virtualenv

    • 创建虚拟环境

    • 激活虚拟环境

    • 安装django

      pip install django
      pip install django==3.2
      
    • 创建新项目

      django-admin startproject xxxx
      
    • 编写代码

    • 运行项目

      python manage.py runserver 
      python manage.py runserver 8000
      python manage.py runserver 127.0.0.1:8000
      
  • Pycharm【开发】

    • 最新版本的django

      注意事项:pycharm为了防止大家用低版本pycharm,例如:2020.1版本的pycharm
      
    • 老旧版本的django

      • 虚拟环境

      • 安装老旧django

      • 创建项目

        django-admin startproject xxxx  .
        
      • Pycharm配置:项目 + 环境

1.2 关于老项目

  • 代码下载下来
  • 创建虚拟环境
  • 虚拟环境 + 项目绑定 + 安装必备的模块

注意:requirements.txt + Python解释器(问、文档)

1.3 纯净版项目

django内置有100个功能,5个功能是项目使用概率比较大。

  • 创建Django项目时,默认配置上功能。
  • 创建Django项目时,默认配置剔除。

Django纯净和Flask等轻量级框架的对比:

  • Flask,一个py文件项目,基于蓝图项目创建结构化。
  • Django,默认的配置,剔除 好几个文件。

a.创建项目

E:/PycharmProjects/day004
	- day004
		- urls.py     URL和函数对应关系
		- wsgi.py     底层请求处理入口【同步】
		- asgi.py     底层请求处理入口【异步】
		- settings.py 配置文件(内置配置文件global_settings假设200项配置 + 用户3项配置 =201配置)
	- manage.py       [管理项目]

b.默认功能

INSTALLED_APPS = [
    'django.contrib.admin',              # django内置后台管理,简单数据库的增删改查
    'django.contrib.auth',               # 用户登录和认证权限
    'django.contrib.contenttypes',       # 复杂表结构关系
    'django.contrib.sessions',           # 如果项目中有登录成功让用户可以访问。
    'django.contrib.messages',           # 消息展示,依赖Session
    'django.contrib.staticfiles',        # 静态资源处理,图片、css、js等
]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
# 找功能模块,将功能模块中需要创建表结构,创建出来。
>>>python manage.py makemigrations          【找功能模块】【表结构】【生成配置文件并放到指定目录】
>>>python manage.py migrate                 【读取生成的配置文件,提交到数据库】
>>>python manage.py createsuperuser

纯净版配置:

# Application definition

INSTALLED_APPS = [
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    # 'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    # 'django.contrib.auth.middleware.AuthenticationMiddleware',
    # 'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                # 'django.contrib.auth.context_processors.auth',
                # 'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

from django.contrib import admin
from django.urls import path

urlpatterns = [
    # path('admin/', admin.site.urls),
]

小结

  • 本地开发:基于Pycharm创建项目(新版本、老旧版)
  • 本地开发:打开别人的项目
  • 创建纯净版项目

1.4 关于APP

创建的django项目:

E:/PycharmProjects/day004
	- day004
		- urls.py     URL和函数对应关系
		- wsgi.py     底层请求处理入口【同步】
		- asgi.py     底层请求处理入口【异步】
		- settings.py 配置文件(内置配置文件global_settings假设200项配置 + 用户3项配置 =201配置)
	- manage.py       [管理项目]

关于APP,主要用于业务功能模块的开发。

  • 创建APP

    python manage.py startapp app01
    python manage.py startapp app02
    
    E:/PycharmProjects/day004
    	- day004
    		- urls.py     URL和视图函数对应关系
    		- wsgi.py     底层请求处理入口【同步】
    		- asgi.py     底层请求处理入口【异步】
    		- settings.py 配置文件(内置配置文件global_settings假设200项配置 + 用户3项配置 =201配置)
    	- manage.py       [管理项目]
    	- app01
    		- migrations  
    			- ..
    			- ...
    		- models.py   用ORM代替原生SQL语句(对类和对象进行操作  -> SQL语句 -> 自动执行)
    		              编写类    +  makemigraions/migrate   -> 数据库
    		- apps.py     "app01.apps.App01Config"
    		- admin.py    配合django-admin可以对当前app中的表进行增删改查操作。
    		- test.py     单元测试(不写单元测试)
    		- views.py    业务功能【视图函数】
    	- app02
    		- migrations  
    		- models.py
    		- admin.py
    		- apps.py
    		- test.py
    		- views.py
    

注意:一般情况下一个app就够了;开源组件;公共模块,拆分到单独的app模块。

多app应用的目录结构:

  • 单独1个app的项目 【推荐】

    E:/PycharmProjects/day004
    	- day004
    		- urls.py     URL和视图函数对应关系
    		- wsgi.py     底层请求处理入口【同步】
    		- asgi.py     底层请求处理入口【异步】
    		- settings.py 配置文件(内置配置文件global_settings假设200项配置 + 用户3项配置 =201配置)
    	- manage.py       [管理项目]
    	- app01
    		- migrations  
    			- ..
    			- ...
    		- models.py   用ORM代替原生SQL语句(对类和对象进行操作  -> SQL语句 -> 自动执行)
    		              编写类    +  makemigraions/migrate   -> 数据库
    		- apps.py     "app01.apps.App01Config"
    		- admin.py    配合django-admin可以对当前app中的表进行增删改查操作。
    		- test.py     单元测试(不写单元测试)
    		- views.py    业务功能【视图函数】
    
  • 多个app

    在这里插入图片描述

  • 多个app,放在apps的文件夹中 【推荐】

    E:/PycharmProjects/day004
    	- apps
    		- app01
    			- views.py
    			- admins.py
    			- models.py
    			...
    		- app02
    			- views.py
    			- admins.py
    			- models.py
    			...
    		- app03
    			- views.py
    			- admins.py
    			- models.py
    			...
    	- day004
    		- urls.py     URL和视图函数对应关系
    		- wsgi.py     底层请求处理入口【同步】
    		- asgi.py     底层请求处理入口【异步】
    		- settings.py 配置文件(内置配置文件global_settings假设200项配置 + 用户3项配置 =201配置)
    	- manage.py       [管理项目]
    

    到底什么时候创建1个app?什么时候创建多个app?

    • 案例1:公司官网

      app01:  -> 公司官网开发,主要使用者:学员。
      app02:  -> 内部运营使用的功能模块
      app03:  -> 导师下载作业、批改作业、评分。
      
    • 案例2:公司官网【现阶段】

      app01:
          公司官网开发,主要使用者:学员。
          内部运营使用的功能模块
          导师下载作业、批改作业、评分。
      
      app01:  -> 公司官网开发,主要使用者:学员。
      app02:  -> 内部运营使用的功能模块
      app03:  -> 导师下载作业、批改作业、评分。
      

2.路由系统

2.1 常见操作

通俗的语言来表示:URL -> 函数对应关系

在这里插入图片描述

2.2 路由源码分析

2.2.1 路由定义的本质

在这里插入图片描述

from django.urls import path, re_path
from apps.www import views

from django.urls import URLPattern
from django.urls.resolvers import RoutePattern

urlpatterns = [

    URLPattern(RoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
    path('login/', views.login, name='n1'),

    # http://127.0.0.1:8000/info/2222/
    # http://127.0.0.1:8000/info/2222/?a1=1&b1=2
    # path('info/<int:v1>/', views.info),

    # http://127.0.0.1:8000/other/11/yiyebaitou/
    # http://127.0.0.1:8000/other/222/shiyi/
    # path('other/<int:v1>/<str:v2>/', views.other),

    # path('xx/<path:v2>/', views.xx),
    # path('xx/<uuid:v2>/', views.xx),

    # http://127.0.0.1:8000/yy/2014-11-11
    # re_path(r'yy/(\d{4})-(\d{2})-(\d{2})/', views.yy),
]
  • 编写路由

  • 启动项目时

    urlpatterns = [
    	对象(URL地址、函数),
    	对象(URL地址、函数),
    	对象,
    	对象,
    	对象,
    	URLPattern(RoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
    ]
    
    # 内部路由匹配的时,默认执行:
    URLPattern.resolve
        self.pattern.match()
        return ResolverMatch(...)
        
    # 进阶操作
    # 路由系统中的扩展点:
    	URLPattern.resolve
    	RoutePattern.match
    	自定义ResolverMatch类
    
  • 用户浏览器访问

    http://127.0.0.1:8000/login/
    
  • django的源码内部,一定会匹配,获得相应的视图函数

    http://127.0.0.1:8000 /login/
    
    urlpatterns = [
    	对象(URL地址、函数),
    	对象(URL地址、函数),
    	对象,
    	对象,
    	对象
    ]
    
    urlconf = 'day006.urls'
    resolver = URLResolver(RegexPattern(r"^/"), urlconf)
    
    resolver_match = resolver.resolve(request.path_info)
    
    callback, callback_args, callback_kwargs = resolver_match
    
  • 执行视图函数

听完的感受:

  • 流程是懵逼,Django请求的流程懵逼【证明】。

  • 我们需要基于源码记住

    urlpatterns = [
        path('login/', views.login),
        path('info/<int:v1>/', views.info),
    ]
    
    urlpatterns = [
        URLPattern(RoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
        URLPattern(RoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
        URLPattern(RoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
        URLPattern(RoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
    ]
    
  • 源码内部路由匹配的时,是怎么做的?

    URLPattern.resolve
    	RoutePattern.match
    
    def resolve(self, path):
        match = self.pattern.match(path)
        if match:
            new_path, args, captured_kwargs = match
            # Pass any default args as **kwargs.
            kwargs = {**captured_kwargs, **self.default_args}
            return ResolverMatch(
                self.callback,
                args,
                kwargs,
                self.pattern.name,
                route=str(self.pattern),
                captured_kwargs=captured_kwargs,
                extra_kwargs=self.default_args,
            )
    
    
        def match(self, path):
            match = self.regex.search(path)
            if match:
                # RoutePattern doesn't allow non-named groups so args are ignored.
                kwargs = match.groupdict()
                for key, value in kwargs.items():
                    converter = self.converters[key]
                    try:
                        kwargs[key] = converter.to_python(value)
                    except ValueError:
                        return None
                return path[match.end() :], (), kwargs
            return None
    
    

2.3 name别名

path('login/', views.login, name='n1'),
URLPattern(RoutePattern("login/", name="n1", is_endpoint=True), views.login, None, "n1"),
def login(request):
    return HttpResponse("欢迎登陆")
from django.urls import reverse

result = reverse("n1")
print(result) # "login/"
path('api/auth/login/<int:v1>/', views.login, name='n1'),
def login(request,v1):
    return HttpResponse("欢迎登陆")
from django.urls import reverse

result = reverse("n1",kwargs={"v1":123})
print(result) # "/api/auth/login/123/"

result = reverse("n1",kwargs={"v1":999})
print(result) # "/api/auth/login/999/"

name存在的意义?例如:用户登录登录程序

/api/auth/login/         ->   函数登录
/api/user/account/      ->    函数账单
path('api/auth/login/',  views.login,  name='n1'),
path('api/user/account/', views.account, name='n2'),
def login(request):
    # 当用户登录成功之后,需要让用户跳转到 /api/user/account/ 页面
    # return redirect("/api/user/account/")
    
	# url = reverse("n2")   # "/api/user/account/"
    # return redirect(url)

	return redirect("n2")
    
def account(request):
    return HttpResponse("用户信息")

name存在的意义?例如:权限管理

A用户有权访问的网址:
	/api/auth/login/ 
	/api/user/account/
	/api/user/order/
	/api/user/order/<int:v1>/
	
B用户有权访问的网址:
	/api/user/account/
	/api/user/order/
	/api/user/order/<int:v1>/
A用户有权访问的网址:
	n1
	n2
	n3
	
B用户有权访问的网址:
	n2
	n3

总结

  1. 创建Django项目

    • 虚拟环境 + 新版本
    • 虚拟环境 + 老旧版
  2. app的概念

    • 1个app
    • 多个app(apps文件夹)
  3. 路由系统

    • 【必备】常见路由操作

      # http://127.0.0.1:8000/info/2222/
      # http://127.0.0.1:8000/info/2222/?a1=1&b1=2
      path('info/<int:v1>/', views.info),
      
      # http://127.0.0.1:8000/other/11/yiyebaitou/
      # http://127.0.0.1:8000/other/222/shiyi/
      path('other/<int:v1>/<str:v2>/', views.other),
      
      # path('xx/<path:v2>/', views.xx),
      # path('xx/<uuid:v2>/', views.xx),
      
      # http://127.0.0.1:8000/yy/2014-11-11
      re_path(r'yy/(\d{4})-(\d{2})-(\d{2})/', views.yy),
      

      在这里插入图片描述

    • 【必备】name别名

      • 反向别名生成URL地址
      • 权限分配,不会用URL网址而是使用name别名。
    • 【可选】源码的流程+扩展点

      MyURLPattern(MyRoutePattern("login/", name=None, is_endpoint=True), views.login, None, None),
      URLPattern(RoutePattern("login/", name="n1", is_endpoint=True), views.login, None, "n1"),
      
      django.urls.resolvers.URLResolver.resolve
      django.urls.URLPattern.resolve
      django.urls.resolvers.RoutePattern.match
      
      django.urls.resolvers.URLResolver.resolve
      	for obj in ....:
      		# django.urls.URLPattern.resolve
      		# obj.resolve
      			# self.pattern.match
      			django.urls.resolvers.RoutePattern.match
      

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【VSCode】CMake Language Support 总是下载 .NET 超时,但又不想升级dotnet

错误信息 Error: Could not resolve dotnet path!An error occurred while installing .NET (6.0): .NET Acquisition Failed: Installation failed: Error: .NET installation timed out. You may need to change the timeout time if you have a slow connection. Please se…

https配置证书

HTTPS 基本原理 https 介绍 HTTPS&#xff08;全称&#xff1a;HyperText Transfer Protocol over Secure Socket Layer&#xff09;&#xff0c;其实 HTTPS 并不是一个新鲜协议&#xff0c;Google 很早就开始启用了&#xff0c;初衷是为了保证数据安全。 国内外的大型互联网…

OpenAI ChatGPT-4开发笔记2024-05:windows下anaconda中设置visual studio code workspace

这里写自定义目录标题 1 安装anaconda和vscode2 Create an Anaconda Environment3 select Python Interpreter4 Workspace5 Open Workspace With File6 开发文件夹加入workspace7 美化 1 安装anaconda和vscode 标配。 2 Create an Anaconda Environment conda create --name…

编译原理Lab4-使用LightIR框架自动产生cminus-f语言的LLVM IR

[[#实验框架|实验框架]][[#实验过程|实验过程]] [[#实验过程#全局变量的设计|全局变量的设计]][[#实验过程#1ASTProgram|1ASTProgram]][[#实验过程#2ASTNum|2ASTNum]][[#实验过程#3ASTVarDeclaration|3ASTVarDeclaration]][[#实验过程#4ASTFunDeclaration|4ASTFunDeclaration]]…

简析云能耗管理系统在某高校建筑系统平台的设计与应用

叶根胜 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;根据本项目&#xff0c;依托某学院电能计量管理系统、供水计量监督系统、供热计量管理系统等基础平台&#xff0c;制定了高校建筑能耗综合管理系统平台应用的总体框架和方案。该系统可以实时监控、统计能耗和…

轻松掌握 Java Faker ,学点真本事,做点“假”数据~

工作中难免遇到需要造点“假”数据的情况&#xff0c;而且数据必须是“真”的&#xff0c;演示效果要好看一些。 一般接到这种要求&#xff0c;大部分的测试都不太知道该怎么去做。今天罗杰老师教你一招&#xff0c;让你做出逼真的“假”数据。 前言 1、什么是 Java Faker 伪…

【c++】list的特性及使用

目录 一、list的介绍 二、list的深度剖析与模拟实现 1、list图解 2、list增删查改模拟实现 三、list与vector的对比 一、list的介绍 STL中的list指的是带头双向循环链表。list是可以在常数范围内任意位置进行插入和删除的序列式容器&#xff0c;并且可以前后双向迭代。lis…

Activiti7官方在线流程设计器下载和部署

文章目录 一、流程设计器下载二、流程设计器简单运行三、流程设计器简单使用四、流程设计器持久化持久化会遇到的常见错误 五、流程设计器汉化说明菜单汉化操作汉化 参考文档 一、流程设计器下载 官网下载地址&#xff1a;https://www.activiti.org/get-started 点击直接获取官…

Flutter 小技巧之升级适配 Xcode15

美好的 2024 从「适配」开始&#xff0c;按照苹果的尿性&#xff0c;2024 春季开始大家将不得使用 Xcode15 来构建 App &#xff0c;另外根据《2024 的 iOS 的隐私清单》 要求&#xff0c;使用 Flutter 的开发者是无法逃避适配 Xcode15 更新的命运。 另外&#xff0c;众所周知…

vue3组件传参

1、props: 2、自定义事件子传父 3、mitt任意组件通讯 4、v-model通讯(v-model绑定在组件上) (1)V2中父子组件的v-model通信&#xff0c;限制了popos接收的属性名必须为value和emit触发的事件名必须为input,所以有时会有冲突; 父组件: 子组件: (2)V3中:限制了popos接收的属性名…

详解Java死锁-检测与解决

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊死锁。特别是对于咱们这些Java程序员来说&#xff0c;死锁就像是隐藏在暗处的陷阱&#xff0c;稍不注意就会掉进去。但别担心&#xff0c;小黑今天就来带大家一探究竟&#xff0c;看看怎么样才能避…

什么是短视频矩阵系统?效果是怎么样的?

短视频矩阵系统是一种通过将多个短视频连接起来形成一个整体的系统。它的效果是可以提供一种连贯而有序的观看体验&#xff0c;使观众可以连续地观看一系列相关的短视频内容。 短视频矩阵系统的运作方式如下&#xff1a;首先&#xff0c;用户在平台上选择一个短视频开始观看。…

一款开源的MES系统

随着工业4.0的快速发展&#xff0c;制造执行系统&#xff08;MES&#xff09;成为了智能制造的核心。今天&#xff0c;将为大家推荐一款开源的MES系统——iMES工厂管家。 什么是iMES工厂管家 iMES工厂管家是一款专为中小型制造企业打造的开源MES系统。它具备高度的可定制性和灵…

刷了四百道算法题,我在项目里用过哪几道呢?

大家好&#xff0c;我是老三&#xff0c;今天和大家聊一个话题&#xff1a;项目中用到的力扣算法。 不知道从什么时候起&#xff0c;算法已经成为了互联网面试的标配&#xff0c;在十年前&#xff0c;哪怕如日中天的百度&#xff0c;面试也最多考个冒泡排序。后来&#xff0c;…

强化学习的数学原理学习笔记 - 策略梯度(Policy Gradient)

文章目录 概览&#xff1a;RL方法分类策略梯度&#xff08;Policy Gradient&#xff09;Basic Policy Gradient目标函数1&#xff1a;平均状态值目标函数2&#xff1a;平均单步奖励&#x1f7e1;PG梯度计算 &#x1f7e6;REINFORCE 本系列文章介绍强化学习基础知识与经典算法原…

android的求职APP 前端+后端

一 项目名称 基于android的求职APP&#xff0c;包含前台和后台管理系统的&#xff0c;前端主要移动端&#xff0c;应聘者注册账号&#xff0c;然后登陆&#xff0c;完善自己的简历&#xff0c;然后根据自己的需要投递岗位&#xff0c;查看面试邀请&#xff0c;后台主要维护数据…

听GPT 讲Rust源代码--compiler(34)

File: rust/compiler/rustc_middle/src/ty/print/mod.rs 在Rust源代码中&#xff0c;文件rust/compiler/rustc_middle/src/ty/print/mod.rs的作用是定义了打印类型和其他相关信息的功能。 具体来说&#xff0c;该文件中定义了三个trait&#xff0c;分别为Print<tcx>、Pri…

Java_特殊文件

一、属性文件 1.1 特殊文件概述 前面学习了IO流&#xff0c;知道IO流是用来读、写文件中的数据。但是接触到的文件都是普通的文本文件&#xff0c;普通的文本文件里面的数据是没有任何格式规范的&#xff0c;用户可以随意编写&#xff0c;如下图所示。 像这种普通的文本文件…

Selenium教程08:文件的上传+下载的示例练习

1.上传李白.txt文件&#xff0c;这里使用的send_keys方法操作&#xff0c;而不是click点击操作&#xff0c;因为使用点击操作之后&#xff0c;Selenium中没有方法对.exe程序操作&#xff0c;它只能对web网页自动化操作。 # Author : 小红牛 # 微信公众号&#xff1a;WdPython…

web前端开发技术复习问答题

目录 1.简述常见单标签和双标签有哪些&#xff1f; 2.常见块级元素和行级元素有哪些&#xff1f; 3.简述常见的列表有哪些&#xff1f;他们有什么区别&#xff1f; 4.简述超链接的href属性值如何设置&#xff1f;有什么区别 5.CSS基本语法 6. css中常见的引入方式有几种&…