如何新建py_【数据分析入门】如何做一个专属“学习笔记”?(五)

接下来我们来创建学习笔记主页~使用Django创建网页的过程通常分为3个阶段:定义URL、编写视图和编写模版。首先你必须定义URL模式。URL模式描述了URL是如何设计的,让Django知道如何将浏览器请求与网站URL相匹配,以确定返回哪个网页。

每个URL都被映射到特定的视图——视图函数获取并处理网页所需的数据。视图函数通常调用一个模版,后者生成浏览器能够理解的网页。为明白其中的工作原理,我们来创建学习笔记的主页。我们将定义该主页的URL,编写其视图函数,并创建一个简单的模版。

6e21bb32fe38b74338a9d1acb54b8437.gif6e21bb32fe38b74338a9d1acb54b8437.giff43eda72b4136aaeb9ac409272044ae6.gif

映射URL

用户通过在浏览器中输入URL以及单击链接来请求网页,因此我们需要确定项目需要哪些URL。主页的URL最重要,它是用户用来访问项目的基础URL。当前,基础URL(本地)返回默认的Django网站,让我们知道正确地建立了项目。我们将修改这一点,将这个基础URL映射到学习笔记主页。

打开learning_log中的urls.py,你将看到如下代码:

from django.contrib import adminfrom django.conf.urls import include, urlurlpatterns = [path(r'^admin/', include(admin.site.urls)),]

前两行导入了为项目和管理网站管理URL的函数和模块。这个文件主体定义了变量urlpatterns。在这个针对整个项目的urlspatterns模块中,该变量包含了项目中应用程序的url。admin.site.urls定义了可在管理网站中请求的所有URL。

我们需要包含learning_logs的URL:

from django.contrib import adminfrom django.conf.urls import include, urlurlpatterns = [url(r'^admin/', include(admin.site.urls)),url(r'',include('learning_logs.urls',namespace = 'learning_logs')),]

我们添加了一行代码来包含模块learning_logs.urls。这行代码包含实参namespace,让我们能够将learning_logs的URL同项目中的其他URL区分开来,这在项目开始扩展时很有帮助。

默认的url.py包含在文件夹learning_log中,现在我们需要在文件夹learning_logs中创建另一个urls.py文件:

#定义learning_logs的URL模式from django.conf.urls import urlfrom . import viewsurlpatterns = {#主页url(r'^$',views.index,name='index'),}

首先我们在文档开头添加了一行注释,说明是learning_logs的url模式,接下来,我们导入了函数url,因为我们需要使用它来将URL映射到视图。我们还导入了模块views,其中的句点让Python从当前到urls.py模块所在到文件夹中导入视图。在这个模块中,变量urlpatterns是一个列表,包含可在应用程序learning_logs中请求的网页。

实际的URL模式是一个对函数url()的调用,这个函数接受三个实参。第一个是一个正则表达式。Django在urlpatterns中查找与请求的URL字符串匹配的正则表达式,因此正则表达式定义了Django可查找的模式。

我们来看看正则表达式r'^$'。其中的r让Python接下来的字符串视为原始字符串,而引号告诉Python正则表达式始于和终于何处。脱字符(^)让Python查看字符串的开头,而美元符号让Python查看字符串的末尾。总体而言,这个正则表达式让Python查找开头和末尾之间没有任何东西的URL。Python忽略项目的基础URL,因此这个正则表达式与基础URL匹配。其他URL都与这个正则表达式不匹配。如果请求的URL不与任何URL模式匹配,Django将返回一个错误页面。

url()的第二个实参制定了要调用的视图函数。请求的URL与前述正则表达式匹配时,Django将调用views.index。第三个实参将这个URL模式的名称指定为index,让我们能够在代码的其他地方引用它。每当需要提供到这个主页的链接时,我们都将使用这个名称,而不编写URL。

6e21bb32fe38b74338a9d1acb54b8437.gif6e21bb32fe38b74338a9d1acb54b8437.giff43eda72b4136aaeb9ac409272044ae6.gif

编写视图

视图函数接受请求中的信息,准备好生成网页所需的数据,再将这些数据发送给浏览器——这通常是使用定义了网页是什么样的模版实现的。

learning_logs中的文件views.py是你执行命令python manage.py startapp时自动生成的,当前其内容如下:

from django.shortcuts import render

当前,这个文件只导入了函数render(),它根据视图提供的数据渲染响应。下面的代码演示了该如何为主页编写视图:

from django.shortcuts import renderdef index(request):#学习笔记的主页return render(request,'learning_logs/index.html')

6e21bb32fe38b74338a9d1acb54b8437.gif6e21bb32fe38b74338a9d1acb54b8437.giff43eda72b4136aaeb9ac409272044ae6.gif

编写模版

模版定义了网页的结构。模版制定了网页是什么样的,而每当网页被请求时,Django将填入相关的数据。模版让你能够访问视图提供的任何数据。我们的主页视图没有提供任何数据,因此相应的模版非常简单。

在文件夹learning_logs中新建了一个文件夹,并将其命名为templates。在文件夹templates中,再新建一个文件夹,并将其命名为learning_logs。在learning_logs中,新建一个文件,并将其命名为index.html,再在这个文件中编写如下代码:

Learning LogLearning Log helps you keep track of your learning,for any topic you'reLearning about.

现在,如果你请求基础url:http://127.0.0.1:8000/,将看到刚才创建的网页,而不是默认的Django网页。

6ab55388e3ece3558743180599b6e298.png

803f31e93835ffd71056e3806a651278.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值