前面的操作,基于Django框架,创建了Web项目和应用程序(APP),下面开始创建网页。

        一般来说,创建网页分为三个阶段:定义URL、编写视图和编写模板

        基本工作流是:浏览器请求url,django通过url模式明确需要调用的视图函数,视图函数调用模型获取相应的数据(信息),通过return render()方法返回模板(网页)和数据,模板和数据填写到浏览器请求的url中。

 

一、定义URL

        通过定义URL模式,让Django知道如何将浏览器请求与网站的URL匹配,以确定返回哪个网页。

在项目主文件夹learning_log,包含有urls.py:  它定义了访问:http://localhost:8001/admin的页面,定义了可在管理网站中请求的所有URL。

基于django网页的调用深度学习框架图 django开发网页_应用程序

        需要把learning_logs的URL包含到urls.py中:——这样就把应用程序的URL包含进去项目。

基于django网页的调用深度学习框架图 django开发网页_html_02

         以上这个urlpatterns是一个列表,包含了可以在项目(learning_log)中可以调用的应用程序。

        urls.py文件是在learning_log文件夹中,需要在应用程序的文件夹learning_logs中创建新的urls.py:

基于django网页的调用深度学习框架图 django开发网页_python_03

          在应用程序(learning_logs)的urls.py中,定义了三个url模式,第一个参数是正则表达式,第二个参数是要调用的视图,第三个参数是URL模式的名字。

         以上这个urlpatterns是一个列表,包含了可以在应用程序(learning_logs)中可以调用的网页。

 

二、编写视图

        每个URL都被映射到特定的视图——视图函数获取并处理网页所需的数据。

        视图函数接受请求中的信息,准备好生成网页所需的数据,再讲数据发送给浏览器——通常是通过模板实现。

打开learning_logs文件夹里面的views.py,这个文件是执行命令:python manage.py startapp自动生成的。

在这个文件添加以下内容:

基于django网页的调用深度学习框架图 django开发网页_html_04

视图函数的名字对应于url模式中的视图名字,传入参数除了request,还可以是其他,比如topic_id;返回的结果除了网页,还有填写到网页中的数据context——来自于模型(数据库)。

 

三、编写模板

        视图函数通常调用一个模板,后者生成浏览器能够理解的网页。

        模板定义了网页的结构,每当网页被请求时,Django将填入相关的数据。

        模板让你能够访问视图提供的任何数据。

        在文件夹learning_logs中新建templates文件夹,在templates文件夹再建learning_logs文件夹,在这个文件夹中创建这些文件:

基于django网页的调用深度学习框架图 django开发网页_django_05

base.html是父模板,其他模板都继承于父模板。——通过继承关系,让模板的修改非常容易。

基于django网页的调用深度学习框架图 django开发网页_python_06

模板标签:{% %},是一段代码,生成要在网页中显示的信息。

在这个实例中,{% url 'learning_logs:index' %} 生成一个URL,与learning_logs/urls.py的index模式匹配。

 

index.html 继承base.html

基于django网页的调用深度学习框架图 django开发网页_python_07

 

topics.html 继承base.html

基于django网页的调用深度学习框架图 django开发网页_应用程序_08

 

topic.html 继承base.html

基于django网页的调用深度学习框架图 django开发网页_数据_09

 

NOTES:

1.模板文件的缩进层级比较多,所以每个层级只需要缩进两个空格;

2.视图通过参数传递数据给模板,如上面的context;

3.for循环标签,需要一个 {% endfor %} 来结束;

4.应用程序的urls.py中,需要明确写上app_name = 'learning_logs',要不会报错。

5.正则表达式需要注意,其中(?P<topic>    这里的P是大写;

6.竖线(|)表示模板过滤器,对模板变量的值进行修改的函数;