前面的操作,基于Django框架,创建了Web项目和应用程序(APP),下面开始创建网页。
一般来说,创建网页分为三个阶段:定义URL、编写视图和编写模板
基本工作流是:浏览器请求url,django通过url模式明确需要调用的视图函数,视图函数调用模型获取相应的数据(信息),通过return render()方法返回模板(网页)和数据,模板和数据填写到浏览器请求的url中。
一、定义URL
通过定义URL模式,让Django知道如何将浏览器请求与网站的URL匹配,以确定返回哪个网页。
在项目主文件夹learning_log,包含有urls.py: 它定义了访问:http://localhost:8001/admin的页面,定义了可在管理网站中请求的所有URL。
需要把learning_logs的URL包含到urls.py中:——这样就把应用程序的URL包含进去项目。
以上这个urlpatterns是一个列表,包含了可以在项目(learning_log)中可以调用的应用程序。
urls.py文件是在learning_log文件夹中,需要在应用程序的文件夹learning_logs中创建新的urls.py:
在应用程序(learning_logs)的urls.py中,定义了三个url模式,第一个参数是正则表达式,第二个参数是要调用的视图,第三个参数是URL模式的名字。
以上这个urlpatterns是一个列表,包含了可以在应用程序(learning_logs)中可以调用的网页。
二、编写视图
每个URL都被映射到特定的视图——视图函数获取并处理网页所需的数据。
视图函数接受请求中的信息,准备好生成网页所需的数据,再讲数据发送给浏览器——通常是通过模板实现。
打开learning_logs文件夹里面的views.py,这个文件是执行命令:python manage.py startapp自动生成的。
在这个文件添加以下内容:
视图函数的名字对应于url模式中的视图名字,传入参数除了request,还可以是其他,比如topic_id;返回的结果除了网页,还有填写到网页中的数据context——来自于模型(数据库)。
三、编写模板
视图函数通常调用一个模板,后者生成浏览器能够理解的网页。
模板定义了网页的结构,每当网页被请求时,Django将填入相关的数据。
模板让你能够访问视图提供的任何数据。
在文件夹learning_logs中新建templates文件夹,在templates文件夹再建learning_logs文件夹,在这个文件夹中创建这些文件:
base.html是父模板,其他模板都继承于父模板。——通过继承关系,让模板的修改非常容易。
模板标签:{% %},是一段代码,生成要在网页中显示的信息。
在这个实例中,{% url 'learning_logs:index' %} 生成一个URL,与learning_logs/urls.py的index模式匹配。
index.html 继承base.html
topics.html 继承base.html
topic.html 继承base.html
NOTES:
1.模板文件的缩进层级比较多,所以每个层级只需要缩进两个空格;
2.视图通过参数传递数据给模板,如上面的context;
3.for循环标签,需要一个 {% endfor %} 来结束;
4.应用程序的urls.py中,需要明确写上app_name = 'learning_logs',要不会报错。
5.正则表达式需要注意,其中(?P<topic> 这里的P是大写;
6.竖线(|)表示模板过滤器,对模板变量的值进行修改的函数;