00:00
好,来,下边咱们把这个port给它建出来。在这啊,这个负责具体业务功能的这个放到我们solve model这个包的下边。我们把这个名儿复制一下啊。Portal啊,它有这个门户的意思。哎,我们让他呢,来继承一下我们的这个,对他只需要继承这个base啊,他不需要继承那个model,他这里边不牵扯根据方法名去调反射调方法的那个问题。呃,然后在这里边呢,因为没有继承model base,没有没有这个这个它还是要重写do get do方法啊。那么因为我们想呢,你斜杠过来的啊,就是你首页访问这个地址。
01:03
应该说肯定是get的请求啊,基本上不可能是炮请求过来的,如果说呢,你要是不放心的话呢,大不了就还是保险一点啊,去去去做这样一个合并在do get里边调度post啊,但是其实应该说也不会有这样的问题。这么反正就是图个放心吧。然后在这里边儿呢,我们就来声明一下啊,声明要访问的。首页视图的逻辑。啊,首首页的。要访问到首页。的逻逻逻逻辑视图,哎,就是我们这个template name。就是我们index啊,这个刚刚分析过了,哎,然后呢,是调用我们父类的方法,根据逻辑视图名称,哎,处理视图。
02:04
或者叫准确说哈,这个我们有专业术语呢,这个叫做渲染视图啊,就是进行一个视图模板的解析,把动态的计算成具体的值,所以这个时候呢,这个调的方法是呃,Process template。Template传来。Request response传进来就行了,这个port要写的话就这么点东西啊,不多。这是我们这里边要做的第一件事儿啊,创建这个扎尔瓦类,下一步呢,是需要把这个扎瓦类上外边睫毛里边得去注册一下。啊,他要具体的要对应我们请求了啊,所以说请求地址要访问他了,所以他就是要去进行这个,呃。外边外边的包里边就需要去注册它了。
03:11
二九。呃,注册它。这个需要用到web.XL。Web X毛呢,我们在前面这儿。CTRLC把这个地址过来。啊,这个图片的地址。那么在这里边我们要配什么呢?肯定他的权利名是跑不了的。Class。Name。
04:03
嗯,然后呢。这都常规配置啊,所以这个东西我们就不解释了哈,就是UR Python,这因为我们需要让它对应斜杠,所以UR pthon这就写斜杠哎。所以说这个配置呢,都常规配置,没有什么特殊的,我们就不多解释了。诶。直接把这个配置拿过来。好。当然了,这个下一步那就是咱们得看看这个首页能不能显示了啊,我们现在这个index这个里边呢,显示一个hello啊,这写上一个啥呢。呃,我们那个例子里边这个首页叫啥来着。啊,这没写哈。
05:02
养心殿,皇上是在养心殿批折子是吧?啊,那我们这个就叫乾清宫吧。我不知道是不是乾隆的时候才会有乾清宫。呃,康康,康熙,康熙皇帝喜欢在长春园是吧?无所谓了啊,这个不重要。这一个哈,哎,跟皇上打个招呼,下边咱们跑起来试一下啊,看看首页能不能够访问到他。咱们现在呢,这边还没有这个他不开的哈,没有他不开的,咱们得这个得新建一个哈。Idea里边没有去绑定他们开。嗯。就我们汤姆八啊,然后呢。
06:00
Defect ID选它。过来这儿呢,我们起个名字叫DEMO。然后过来这儿呢,都选第三个。启动,哎,启动的过程呢,我们需要稍微等一会儿。视频先暂停一下看啊,当我们访问到首页的时候呢,这个出问题了啊,看看这个问题出在哪。呃,首先来说呢,500错误是服务器端抛异常了,然后呢是string index out of bos exception。呃,字符串这个索引呢,超出了它的范围,这么个异常啊,这个这个猛一看呢,这个还挺奇怪的,怎么会出这么个问题呢,仔细一看的话就想起来了,哦,原来是在我们事物的filter这里边出的问题,事物的filter里边他做了什么事呢?我们去筛选了一下这个静态资源。筛选这个静态资源的时候,我们做了一个subt string的这个操作,这个时候呢,我们现在这个请求地址啊,这个serve pass呢,就是个斜杠,它里边呢,它也没有这个,没有这个点,没有点last index of呢,返回的就是负一,你把负一给selfs string传进去的话,它就会出问题,所以在这儿呢,我们进行这个截取之前呢,还得判断一下啊,看看这个serve pass里边有没有点,没有点就不能去做这个操作了啊,有点再去做这个操作。
07:31
呃,包括我们后边的这样一个截取,他们都得是在他建立在他这个有点儿的这个旧础上才能做这个操作。哎,呃,所以这得去改一下,一会儿确认一下没问题,我们就回去把以前那个文档去改一下哈。嗯,过来呢,我们这个Tom k这。重新部署一下哈。让他记住,以后就不要再问了。lo重新部署。
08:12
好,应该是可以了哈,咱们再直接刷新一下。好嘞,乾行宫哈,是吧,没问题,呃,那么就说明这个地方确实要应该要这么改一下哈,找到我们之前的这个这部分这个代码。看一下是在哪儿哈,应该是事物控制第三节。呃,Transaction filter的这个完整代码。CC。Ctrl a。哎,这边重新改一下啊,这个这是一个以前疏忽的一个地方,好,这样的话呢,我们就实现了一个首页的显示,下一步啊,对,还没有完事哈,我们下一步需要在这里边呢,把这个表单给他加上,这个呢,咱们就给他偷个懒哈。
09:09
查看页面源代码。呃,直接呢,我们把这部分哈,直接给它都拿过来就得了。但是呢,这个还得改哈,不是说你这么拿过来就完事了。哎,我们使用Sam leaf呢,需要在这个H码页面上面去声明一个名称空间TH,这个名称空间啊,去声明TH是从哪来的,是塞姆利夫定义的。这一段啊,这个属性就是这个意思,然后呢,下边呢,你在想使用这个TH的时候,下边就可以用了。啊,那么我们哪些地方需要会用到TH呢?我把这个action这个属性前边加一个TH,那么这个属性就会由赛姆利来进行解析,哎,解析的话呢。
10:02
他能帮我们去做这么一件事哈。就是说呢,我们前边的这个。诶,就是说我们这个地方啊,把它用圈A大括号括起来,它前面这个斜杠就能自动解析为我们context pass。就auth啊,它解析后。啊,就是变成了这个,比如说DEMO ath啊,它能自动把我们content pass加上,因为content pass呢,就这个东西啊,也就是我们在这儿配的这个东西。它是会变的啊,它其实是不确定的啊,跟你这个项目怎么部署有极大的关系,或者说就是由你部署的方式来决定的,所以这儿呢,你写死的话,我们就很有可能会出现访问不到的情况,哎,这是这是这个问题。
11:03
呃,那么接下来呢,说他。他访问的呢,就是我们这个,呃,具体负责登录啊,负责退出等等这些操作啊,这样的一个serve,这是那个solve那个地址,接下来呢,他得通过传一个method的请求参数啊,然后呢,后边去告诉solve这个地方呢,它这个是要去这个访问的是哪一个方法,所以说又要再去传一个参数啊,所以在这儿的话,我们可以给他设置一个什么呢。表单隐藏域。请求参数的名字是method,这个值呢就是login啊,表示我们执行这个登录的操作。传递method请求参数,哎,这个目的。目的是为了让。
12:01
当前请求,哎,调用。啊,这个login方法。调用我们那个叫我们一会要去建一个off set啊o off set中的login方法,哎,因为它有反射这样一个机制。这个TH这儿呢,它老是给我们这有这个提示啊,让我们导这个名称空间,可是呢,我们这个名称空间不对啊,我们就是这个现在这个东西呢,是矮这它识别不了啊,所以我们这儿呢,它有提示我们也不改啊,有提示我们也不改,就是这样的。就不改啊,就很任性啊,我就不改。然后这个就是我们说这个登录的账号,登录的密码。然后呢,还有一个问题呢,就是说我们将来。登录失败以后,我们要回到这儿啊,来显示一个登录失败的提示消息。这个东西怎么去显示呢。我们来这儿呢,写一个P标签哈。
13:02
写一个TH冒号,Text。这个意思就是说呀,等服务器端啊,再重新解析这个页面的时候,我会把这里边儿的表达式来替换标签体,也就是开始和标签结束,开开始和结束标签之间的这个部分啊,会被它解析以后的结果呢,会被会被替换掉。哎,这个表达式解析以后呢,会替换这个标签体,那然后呢,在这哈,我们用Dollar大括号来访问一个message。那么他就会从请求域呢去读取啊,以message为属性名的那个属性。这就是我们访问访问请求域的一个语法。哎,里边呢,是一个表达式啊。哎,这个呢是访问,就是说呃,从请求域获取属性名为。
14:07
嗯。这写一个at tr。属性名为at tr name的属性值,哎,这个解析完了以后,把它从请求域里边取出来,解析完了以后去替换它的这个被身体啊,嗯,还有一个你看我们这个filter哈。它里边还有一个system message,这个system message呢,就是说我们比如说发生了呃,一些其他的,我们不知道是什么的错误啊,现在这个呢,是一个登录的一个消息给他再来一个哈。这个呢,就是我们说这个系统啊,就是说这个配合我们filter里边会返回到这儿的一个错,呃,一个错误信息,因为filter这你看它也是转发到这个斜杠这个地方嘛,对吧?啊。把这两个给显示了,这是我们在首页上要去做的事情。
15:03
当然这个我们现在这么写呢,他对不对,后边有没有什么要调整的,还得还得根据我们测试的情况啊来决定。哎。第六节是吧,啊在写这个表。不仅仅是显示表单哈,我们还考虑到了说这个里边,呃,回显,我们后续放到这儿要显示的提示消息。这个index h。写上啊,让大家知道我们操作的是哪一个资源。好嘞,下边的话呢,呃,刷新的话应该是还不行哈。
16:09
然可以哈,它可以自动部署这个不错哈,啊,这样的话,我们这些呢,这个初步这个短暂看着显示的啊,但是你这里边儿呢,这个回响消息这边能不能正常,这个还得看我们继续去开发后续的功能才能测试到这儿啊对,这里边能看的一个是这个。哎,你看我们这儿啊,解析成了这个这个contact pass,这个DEMO解析出来了,哎,你这个这个地方这个contact pass是什么,这儿就能解析出来就是什么,所以这个是动态的啊。
我来说两句