Python Web 企业级项目开发教程(Django 版)(第2版)课件 第1章 Django概述_第1页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第1章 Django概述_第2页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第1章 Django概述_第3页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第1章 Django概述_第4页
Python Web 企业级项目开发教程(Django 版)(第2版)课件 第1章 Django概述_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章Django概述《PythonWeb企业级项目开发教程(Django版)(第2版)》学习目标/Target了解Django的特点,能够列举至少3个Django的特点掌握创建Python虚拟环境的方式,能够使用PyCharm创建并使用虚拟环境掌握安装Django框架的方式,能够在指定的虚拟环境中使用pip工具安装Django框架了解Django的版本,能够说出Python版本与Django版本对应关系掌握新建Django项目的方式,能够独立创建Django项目学习目标/Target熟悉Django项目结构,能够归纳项目各目录的作用熟悉Django项目配置的方式,能够说出常用配置项的作用掌握在Django项目中创建应用的方式,能够根据需求在Django项目中创建应用掌握运行开发服务器的方式,能够运行开发服务器并启动Django项目熟悉Django架构的MTV模式,能够说出MTV模式中各部分的职责章节概述/SummaryDjango是使用Python语言编写的一个开源Web应用框架,它遵循MTV架构、鼓励快速开发,是当前较为流行的一种Web开发框架。本章作为本书的第一章,将从认识Django讲起,逐步引领大家学会搭建Django开发环境以及创建Django项目进而熟悉Django框架。目录/Contents010203认识Django安装Django创建第一个Django项目04Django之MTV模式认识Django1.1

先定一个小目标!了解Django的特点,能够列举至少3个Django的特点1.1认识Django1.1认识DjangoDjango框架最初的主要应用领域是新闻出版业。它被设计成一个能够快速开发内容丰富网站的框架工具,提供了许多便捷的功能,如ORM(对象关系映射)、自动生成管理界面、模板引擎等,使得开发者可以更专注于业务逻辑的实现,而不必过多关注底层技术细节。随着时间的推移,Django逐渐演变成一个通用的Web开发框架,并被广泛应用于各个行业和领域,包括电子商务、社交媒体等。它的简洁性、可扩展性和安全性使得许多开发者选择采用Django来构建他们的Web应用程序。优点齐全的功能完善的文档强大的数据库访问组件灵活的URL映射丰富的模板语言健全的后台管理系统完整的错误信息提示强大的缓存支持国际化1.1认识Django安装Django1.2

先定一个小目标!了解Django的版本,能够说出Python版本与Django版本对应关系1.2.1Django版本选择Django于2008年9月发布1.0版本,此后Django分别以功能版(比如1.0、2.1等)和补丁版(比如2.1.1、3.2.1)发布,其中功能版包含新功能和对已有功能的改进;补丁版根据需要发布,以修复错误或安全问题。一些功能版本会被指定为长期支持(LTS)版本,官方将在较长的时间内提供对该版本的支持。截至2024年1月,Django官方对各个版本的支持情况以及未来发布计划如图所示。1.2.1Django版本选择1.2.1Django版本选择MainstreamSupport表示Django版本发布后的支持阶段,即活跃维护期;ExtendedSupport表示在MainstreamSupport阶段结束后的进一步支持阶段,在该阶段主要集中在关键安全修复和紧急问题的解决,而不会再引入新功能或进行非必要的改进。版本支持及未来发布计划如图所示。1.2.1Django版本选择Django对Python版本的依赖关系具体如表所示。Django版本Python版本3.23.6,3.7,3.8,3.9,3.10(在Django3.2.9中加入了Python3.10的支持)4.03.8,3.9,3.104.13.8,3.9,3.10,3.11(在Django4.1.3中加入了Python3.11的支持)4.23.8,3.9,3.10,3.115.03.10,3.11,3.12多学一招:软件版本命名规则在软件版本号的命名中,常见的命名规则是A.B.C。A表示主版本号(MajorVersion),B表示次版本号(MinorVersion),C表示修订版本号(PatchVersion)。A.B通常是指一个重要的版本更新,可能包含了较大的架构变更、重要功能的增加或改进,以及一些破坏性的变更。这种变更可能会导致现有代码需要进行适应和修改。A.B+1则表示在A.B版本的基础上进行了一些小规模的功能改进、特性添加、错误修复等。这种更新通常是向后兼容的,不会引入较大的破坏性变更。需要注意的是,版本号的具体命名规则可能因项目而异。在实际开发中,可以根据具体项目的需求和约定来制定版本号的命名规则。

先定一个小目标!掌握创建Python虚拟环境的方式,能够使用PyCharm创建并使用虚拟环境1.2.2创建虚拟Python环境实际生产中同一项目的不同版本可能依赖不同的环境,这时需要在系统中安装多个版本的Python,若直接在物理环境中进行配置,多个版本的软件之间会产生干扰。为了避免这种情况,可以在当前主机中创建虚拟环境,并在虚拟环境中创建项目。1.2.2创建虚拟Python环境虚拟环境(VirtualEnvironment)是Python中用于隔离和管理项目依赖包的工具。它允许你在同一台机器上同时管理多个项目的依赖包,每个项目都可以有自己独立的Python环境。主机与虚拟环境之间的关系如图所示。1.2.2创建虚拟Python环境在Python中可以使用venv或virtualenv工具创建虚拟环境,其中venv是Python3.3版本引入的标准库;virtualenv是一个第三方库,可以在Python2.x和Python3.x版本中使用。由于venv是标准库的一部分,所以可以确保它与Python解释器的版本兼容,并且不需要安装额外的依赖。此外,venv的使用也相对简单,可以通过命令行轻松地创建和管理虚拟环境。1.2.2创建虚拟Python环境STEP01在指定目录中打开Windows系统的PowerShell工具,然后再输入创建虚拟环境的命令,例如在D盘的demo目录中创建虚拟环境myenv,具体命令如下。PSD:\demo>python-mvenvmyenv以上命令执行后会创建包含Python的虚拟环境myenv,虚拟环境中的Python版本由系统环境变量PATH中配置的Python安装路径中Python的版本决定,若要创建包含指定Python版本的虚拟环境,需要指定Python解释器的路径,命令格式如下。python-mvenv--python=<python_path>environment1.2.2创建虚拟Python环境--python表示使用指定的Python解释器,environment表示创建的虚拟环境。STEP01例如,创建虚拟环境时,指定使用的Python解释器,具体命令如下。PSD:\demo>python-mvenv--python=C:\Python\python.exemyenv激活创建的虚拟环境。首先将目录切换到虚拟环境的Scripts目录,然后再执行Activate.ps1文件启用虚拟环境。以myenv为例,执行其内部的Activate.ps1文件来激活该虚拟环境,具体命令如下。PSD:\demo\myenv\Scripts>Activate.ps11.2.2创建虚拟Python环境若以上命令执行成功,命令行的路径名之前会出现“(虚拟环境名)”,具体如下所示。(myenv)PSD:\demo\myenv\Scripts>使用deactivate命令可退出虚拟环境。STEP01多学一招:修改PowerShell的执行策略由于在默认情况下PowerShell禁止执行脚本,所以当执行Activate.ps1文件后会出现了“.\Activate.ps1:无法加载文件”。对于上述情况,可通过修改执行策略,以允许在PowerShell中执行已签名的脚本。首先可通过命令先列出所有可用的执行策略的命令,具体命令如下。PSD:\demo>python-mvenvmyenvSTEP01多学一招:修改PowerShell的执行策略执行策略输出结果如图所示。CurrentUser表示当前用户,它对应的值为undefined,表示当前执行策略未定义,因此需要为当前用户设置执行策略。STEP01多学一招:修改PowerShell的执行策略设置的执行策略值及含义如下所示。Restricted(限制):默认的执行策略,不允许执行任何脚本。AllSigned(所有已签名):只允许执行经过数字签名的脚本。RemoteSigned(远程已签名):允许执行本地的脚本,但远程脚本必须经过数字签名。Unrestricted(不受限制):允许执行任何脚本,不要求数字签名。STEP01多学一招:修改PowerShell的执行策略例如,将当前用户的执行策略修改为AllSigned,具体命令如下。执行上述命令之后,还需用户输入是否确认修改执行策略。当前用户确认修改执行策略之后,再执行Activate.ps1便可以激活创建的虚拟环境。修改执行策略如图所示。PSD:\demo>Set-ExecutionPolicy-ExecutionPolicyAllSignedCurrentUser

先定一个小目标!掌握安装Django框架的方式,能够在指定的虚拟环境中使用pip工具安装Django框架1.2.3使用pip安装Django1.2.3使用pip安装Django因为在PyPI(PythonPackageIndex,Python语言的软件包仓库)中包含了Django,所以可以使用pip工具下载并安装Django框架。在虚拟环境myenv中使用pip工具安装Django,具体命令如下。(myenv)PSD:\demo\myenv\Scripts>pipinstalldjango==5.0若命令执行后命令行输出以下信息,说明Django安装成功。Successfullyinstalledasgiref-3.7.2backports.zoneinfo-0.2.1django-5.0sqlparse-0.4.4typing-extensions-4.9.0tzdata-2023.31.2.3使用pip安装Django使用piplist命令查看虚拟环境中安装的包,具体如下所示。PackageVersion-------------------------asgiref 3.7.2backports.zoneinfo 0.2.1Django 5.0pip 21.1.1setuptools 56.0.0sqlparse 0.4.4typing-extensions 4.9.0tzdata 2023.31.2.3使用pip安装Django若想验证Django是否能被Python识别,可在命令行输入“python”,进入Python解释器,在Python解释器中尝试导入Django,并输出Django的版本号,示例如下。(myenv)PSD:\demo\myenv\Scripts>pythonPython3.12.1(tags/v3.12.1:2305ca5,Dec72023,22:03:25)[MSCv.193764bit(AMD64)]onwin32Type"help","copyright","credits"or"license"formoreinformation.>>>importdjango>>>print(django.get_version())5.0get_version()函数获取当前安装的Django版本号,代码执行后输出的5.0为安装的版本号。创建第一个Django项目1.3

先定一个小目标!掌握新建Django项目的方式,能够独立创建Django项目1.3.1新建Django项目在当今社会,技术创新已经成为推动社会进步的关键力量之一。新建Django项目不仅仅是在技术上的一次尝试,更是对社会责任和发展使命的践行。作为开发者,我们应当时刻铭记着技术的发展要为社会带来积极的影响,助力社会的和谐与进步。举例来说,在新建Django项目的过程中,我们可以思考如何将技术与社会责任相结合。比如,我们可以开发一个社交平台,旨在促进公益活动的组织与参与。通过这个平台,用户可以发布、组织和参加各种公益活动,如环保行动、扶贫义卖等。这不仅可以提高社会公益活动的组织效率,还可以增加志愿者的参与度,推动社会公益事业的发展。1.3.1新建Django项目无缝衔接单元测试使用Django提供的命令,可以创建一个Django项目,具体语法格式为如下。1.3.1新建Django项目django-adminstartproject项目名称例如,创建Django项目mysite,具体命令如下所示。django-adminstartprojectmysite以上命令会在当前目录下创建一个名为mysite的Django项目。需注意应避免使用Python或Django的内部保留字来为项目命名,比如settings、urls、models、admin、views、templates、migrations等。无缝衔接单元测试Django还提供了多个命令用于管理和开发Django应用程序的工具。这些命令可以帮助开发人员执行各种任务,包括创建项目、创建应用程序、运行开发服务器、执行数据库迁移、创建超级用户、运行测试等。通过django-admin(Django框架提供的命令行工具)的help命令获取Django管理命令的帮助信息。示例如下。1.3.1新建Django项目(myenv)PSD:\demo\myenv\Scripts>django-adminhelpType'django-adminhelp<subcommand>'forhelponaspecificsubcommand.Availablesubcommands:[django]check...无缝衔接单元测试例如查看startproject的子命令,示例如下。1.3.1新建Django项目(myenv)PSD:\demo\myenv\Scripts>django-adminhelpstartprojectusage:django-adminstartproject[-h][--templateTEMPLATE][--extensionEXTENSIONS][--nameFILES][--exclude[EXCLUDE]][--version][-v{0,1,2,3}][--settingsSETTINGS][--pythonpathPYTHONPATH][--traceback][--no-color][--force-color]name[directory]...positionalarguments:nameNameoftheapplicationorproject.directoryOptionaldestinationdirectory...usage表示该命令的使用方法,中括号中的内容为可选参数;positionalarguments表示该命令的位置参数,例如name表示创建的项目名称。

先定一个小目标!熟悉Django项目结构,能够归纳项目各目录的作用1.3.2项目结构说明1.3.2项目结构说明查看1.3.1中创建的Django项目结构,具体如下所示。mysite\manage.pymysite\__init__.pysettings.pyurls.pyasgi.pywsgi.py1.3.2项目结构说明Django项目结构中目录和文件的说明如下。mysite\:Django项目的根目录,包含其他子目录或文件。Django并不关心根目录的名称,开发人员可以重新为根目录命名。manage.py:一个命令行工具,用于与项目进行交互。开发人员可以使用它来运行开发服务器、执行数据库迁移、创建超级用户等。子mysite\:一个纯Python包,其中存放项目文件,在引用项目文件时会使用到这个包名,例如mysite.urls。__init__.py:一个空文件,用于告知Python解释器这个文件所在的目录应被视为一个Python包。1.3.2项目结构说明Django项目结构中目录和文件的说明如下。settings.py:Django项目的配置文件,其中包含有关数据库、静态文件、模板、应用程序和其他重要设置的信息。后续内容将介绍该文件的更多细节。urls.py:定义了项目的URL映射关系,即将不同的URL路径与对应的视图函数或应用程序关联起来,其中的每个URL将映射一个视图。asgi.py:用于异步Web服务器的入口点,如DjangoChannels(用于处理实时应用和Websockets的Django扩展框架)。wsgi.py:用于部署项目的入口点,通常与Web服务器(如Apache或Nginx)集成使用。

先定一个小目标!掌握运行开发服务器的方式,能够运行开发服务器并启动Django项目1.3.3运行开发服务器1.3.3运行开发服务器Django提供了一个使用Python编写的轻量级开发服务器,开发期间可暂不配置生产服务器(如Apache),先基于此服务器进行测试。项目创建完成后可以启动开发服务器来检测项目是否有效。以mysite项目为例,演示如何运行开发服务器并启动mysite项目。在命令行工具中使用cd命令切换到manage.py文件所在目录,之后输入以下命令运行开发服务器:1.3.3运行开发服务器pythonmanage.pyrunserver输出信息“Startingdevelopmentserverat:8000/”表明开发服务器已经成功启动。在浏览器中访问:8000/,启动成功提示如图所示。1.3.3运行开发服务器此时查看控制台窗口,可看到浏览器发送来的GET请求,如下所示。1.3.3运行开发服务器[12/Dec/202317:39:03]"GET/favicon.icoHTTP/1.1"4042110[12/Dec/202317:39:17]"GET/HTTP/1.1"20010664浏览器的每个请求都会在开发服务器的命令行窗口中输出,运行开发服务器时产生的错误也会在其中显示。默认情况下开发服务器在本地IP的8000端口上启动,如果要更改端口,可将端口作为命令行参数传递。例如在端口8080上启动服务器,命令如下所示:多学一招:更改开发服务器端口pythonmanage.pyrunserver8080默认情况下,Django开发服务器绑定本地回环地址,只能通过本地访问。如果想更改服务器的IP地址,那么在运行runserver命令时指定IP地址和端口号。例如,指定IP地址为00(局域网IP),端口号为8080,命令如下所示。pythonmanage.pyrunserver00:8080Django开发服务器将在指定的IP地址和端口上启动,并且其他计算机可以通过浏览器访问00:8080来查看Django项目。如果想要使开发服务器在所有IP地址上监听,可以使用作为IP地址,命令如下所示。多学一招:更改开发服务器端口pythonmanage.pyrunserver:8000

先定一个小目标!熟悉Django项目配置的方式,能够说出常用配置项的作用1.3.4Django项目配置无缝衔接单元测试为了使Django项目能适应不同的需求,比如连接各种数据库、指定静态文件的位置等,通常需要对Django项目进行配置。默认情况下,Django项目会在运行以后自动加载项目根目录下的配置文件settings.py,并根据该文件中的信息进行配置。配置文件settings.py本质上是一个Python模块,该文件中包含一些模块级别的变量,每个变量其实是一个配置项。我们可以对这些配置项的值进行修改,以满足特定的需求。1.3.4Django项目配置无缝衔接单元测试1.3.4Django项目配置下面介绍一些Django中比较重要的配置项。(1)DEBUGDEBUG是一个布尔值,用于设置开启/禁用当前项目的调试模式。DEBUG值为True时项目使用调试模式,项目在调试模式下运行时若抛出异常,Django将显示详细的错误页面。生产环境下必须将该选项设置为False,以免暴露与项目相关的敏感数据。(2)ALLOWED_HOSTSALLOWED_HOSTS默认是一个空列表,用于指定允许访问Django应用程序的主机名或IP地址。当ALLOWED_HOSTS值为空列表或DEBUG为True时,主机将根据['.localhost','','[::1]']进行验证,即只允许主机名以.localhost结尾的请求、IP地址为的请求、IPv6地址为[::1]的请求。无缝衔接单元测试1.3.4Django项目配置下面介绍一些Django中比较重要的配置项。(3)INSTALLED_APPSINSTALLED_APPS项的值是一个列表,用于指定当前Django项目启用的所有应用程序。列表中的元素为一个代表应用层配置类或包含应用程序的包的字符串,该选项包含的默认应用与应用的功能具体如下。INSTALLED_APPS=['django.contrib.admin',#管理站点

'django.contrib.auth',#验证框架

'django.contrib.contenttypes',#处理内容类型的框架

'django.contrib.sessions', #会话框架

'django.contrib.messages', #消息机制框架

'django.contrib.staticfiles',#管理静态文件的框架]无缝衔接单元测试1.3.4Django项目配置下面介绍一些Django中比较重要的配置项。(4)MIDDLEWAREMIDDLEWARE用于指定当前项目要使用的中间件列表,中间件是一个组件或插件系统,用于在请求和响应之间进行处理。它允许开发者在请求到达应用程序和响应发送给客户端之间执行额外的逻辑。(5)ROOT_URLCONFROOT_URLCONF是一个字符串,表示指向URL配置模块的Python导入路径,例如ROOT_URLCONF为'mysite.urls'时,表示Django将会从名为'mysite'的Python包中导入名为'urls'的模块作为URL配置,这个'urls'模块包含了URL模式和视图函数之间的映射关系,用于处理来自客户端的HTTP请求。无缝衔接单元测试1.3.4Django项目配置下面介绍一些Django中比较重要的配置项。(6)TEMPLATESTEMPLATES是一个包含Django所有模板引擎的列表,其中的每个元素都是包含单个引擎选项的字典。(7)DATABASESDATABASES是一个包含Django所有数据库设置的字典,其中的每个元素都是一个字典。需要注意,该配置项必须包含一个默认数据库“default”。Django默认使用的数据库为SQLite3,配置信息如下。DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':'mydatabase',}}无缝衔接单元测试1.3.4Django项目配置若项目要使用其他数据库,如MySQL、Oracle,需要其它连接参数。配置MySQL作为Django的默认数据库,具体示例如下。DATABASES={'default':{'ENGINE':'django.db.backends.mysql’,#数据库引擎

'HOST':'29’,#数据库主机地址

'PORT':3306, #数据库端口

'USER':'root’, #数据库用户名

'PASSWORD':'123456’, #数据库密码

'NAME':'xiaoyu’ #数据库名

}}无缝衔接单元测试1.3.4Django项目配置下面介绍一些Django中比较重要的配置项。(8)LANGUAGE_CODELANGUAGE_CODE用于为站点设置默认语言。使用此配置项时,USE_I18N必须设置为True。(9)USE_TZUSE_TZ是一个布尔值,用于指定是否启用时区支持。当USE_TZ设置为True时,Django会启用时区支持,即使用时区信息来处理日期和时间。(10)STATIC_URLSTATIC_URL是一个字符串,用于指定静态文件的URL前缀,默认值为“'static/'”,表示在Django项目中,静态文件的URL前缀是'static/'。

先定一个小目标!掌握在Django项目中创建应用的方式,能够根据需求在Django项目中创建应用1.3.5在项目中创建应用无缝衔接单元测试在Django中,应用是指一个独立的、可重用的Web应用程序模块,通常用于处理网站的特定功能。每个Django项目可以包含多个应用,每个应用都可以独立开发、测试、部署和维护。1.3.5在项目中创建应用无缝衔接单元测试1.创建应用Django应用一般存放在与manage.py文件同级的目录中,以便将其作为顶级模块而非项目的子模块导入。在manage.py所在目录下执行以下命令创建应用。1.3.5在项目中创建应用pythonmanage.pystartappusers无缝衔接单元测试1.创建应用执行创建应用命令后将会创建一个users应用,该应用的目录结构如下。1.3.5在项目中创建应用users\migrations\__init__.py__init__.pyadmin.pyapps.pymodels.pytests.pyviews.py无缝衔接单元测试(1)users:一个纯Python包,其中存放应用文件,在引用文件时会用到这个包名,例如users.urls,表示引用users包中的urls.py文件。(2)admin.py:一个可选文件,用于向Django后台管理系统中注册模型。(3)migrations:一个Python包,其中的文件为执行迁移时生成的迁移文件。(4)models.py:模型文件,Django应用的必备文件,其中包含应用的数据模型。该文件可以为空。(5)test.py:测试文件,可在该文件中编写测试用例。(6)views.py:视图文件,其中包含定义了应用的逻辑。每个视图文件接收一个HTTP请求,处理请求并返回一个响应结果。1.3.5在项目中创建应用无缝衔接单元测试2.安装应用为了使Django能够识别和使用应用程序的功能,需要将创建的应用进行安装,以便在整个项目中能够调用。具体操作为:打开配置文件settings.py,在该文件的配置项INSTALLED_APPS中添加users,添加后的配置项如下所示。1.3.5在项目中创建应用INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','users',]无缝衔接单元测试3.编写视图,配置路由为了测试应用是否安装成功,这里编写一个简单的视图,并配置路由,使应用实现在浏览器中显示“helloworld”的功能。(1)编写视图打开应用users下的视图文件views.py,在其中编写视图函数,具体代码如下。1.3.5在项目中创建应用fromdjango.shortcutsimportrenderfromdjangoimporthttpdefindex(request):returnhttp.HttpResponse('helloworld')无缝衔接单元测试(2)配置路由为了保证服务器能成功找到用户请求的页面,需为应用配置路由。下面介绍两种配置路由方式。第一种方式:首先在应用users中创建urls.py文件,并在该文件配置视图函数与URL的映射关系,具体代码如下。1.3.5在项目中创建应用#mysite/users/urls.pyfromdjango.urlsimportpathfrom.importviewsurlpatterns=[path('hello/',views.index)]无缝衔接单元测试然后在项目的mysite/urls.py文件中,通过路由分发的方式设置要访问哪个应用的urls文件,具体代码如下。1.3.5在项目中创建应用#mysite/urls.pyfromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论