Django自学习4
2016-01-02 10:21
281 查看
编辑Django应用
博客首页 —— 显示最新发表的博客。
博客“详细”页面 —— 单篇博客的固定链接页面。
基于年份的归档页面 —— 显示某给定年份里所有月份发表过的博客。
基于月份的归档页面 —— 显示在给定月份中发表过博客的所有日期。
基于日期的归档页面 —— 显示在给定日期中发表过的所有博客名称。
评论功能 —— 为一篇给定博客发表评论。
在投票应用中将有4个视图:
Question首页----显示最新发布的几个Question
Question"详细"页面-- 显示单个Questlion的具体内容
Question"结果"页面---显示Question的投票结果
编辑第一个视图:
打开polls/views.py 文件(这就是视图中的执行代码):
![](https://img-blog.csdn.net/20160102103301114?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
写完执行代码后需要后期的包装配置,以便使其正常运转,在polls文件中新建一个urls.py文件:
![](https://img-blog.csdn.net/20160102103344429?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
应用中的urls.py仅是应用里面的,要想让外面的大框架知道,需要只会大框架,(让大框架中配置,以使其被广大人民知道.):在mysite文件中对urls.py进行配置:
![](https://img-blog.csdn.net/20160102103918424?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
由此,我们可以编辑更多的视图了:
![](https://img-blog.csdn.net/20160102105422556?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
编辑之后还要重新对应用中的urls.py进行配置:
![](https://img-blog.csdn.net/20160102105609943?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
不必对mysites/urls.py进行配置了,因为之前写第一个应用的时候已经对其进行配置了.
现在编写拥有实际功能的视图:
每个视图只负责处理两件事中的一件:返回一个包含所请求的页面内容HttpResponse对象,或者是一个抛出的Http404异常.
为了方便,我们使用之前的学过的数据库API,在polls/views.py更改:
![](https://img-blog.csdn.net/20160102110819041?wa<br/>bb9a<br/>termark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最终显示为:
![](https://img-blog.csdn.net/20160102110952000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里出现一个问题,页面的设计被硬编码到视图中,如果你想更改页面的外观,就得编码这段python代码,因此,我们用Django的模板系统,通过创建一个叫做templates的目录.django将在这里查找模板.
首先,在polls文件中创建templates的目录.Django将在这里查找模板(注意和在mysites中创建的templates文件不同)
项目中的templates设置描述了Django将如何加载并渲染模板.默认的设置文件settings.py配置一个DajngoTemplates后端,其中将APP_DIRS选项设置为True.按照惯例,DjangoTemplates在INSTALLED_APPS所包含的每个应用的目录下查找名为"templates"子目录.这就是我们为什么没有像之前所做的那样修改DIRS,Djagno也能找到模板的原因.
在创建的templates文件中建立polls文件,在创建的polls文件中建立index.html文件.(polls/templates/polls/index.html):
![](https://img-blog.csdn.net/20160102163217890?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们更新polls/views.py中的index视图来使用模板:polls/views.py:
![](https://img-blog.csdn.net/20160102164458018?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
浏览器界面为:
![](https://img-blog.csdn.net/20160102164545725?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里讲一下快捷方式render():
常见的一个习惯是载入一个模板\填充一个Context然后返回一个含有模板渲染结果的HttpResponse对象.Django为此提供一个快捷方式.下面是一个重写后的index()视图:
![](https://img-blog.csdn.net/20160102165359982?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
一旦我们应用了快捷函数,就不需要再导入loader RequestContext和Httpresponse.render()函数将请求对象设置为第一个参数,模板的名字作为它的第二个参数,一个字典作为它可选的第三个参数.它返回一个HttpResponse对象,含有用给定的Context渲染后的模板.
引发一个404错误:
处理Question详细页面的视图--显示Question内容界面:
![](https://img-blog.csdn.net/20160102170834677?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
显示为:
![](https://img-blog.csdn.net/20160102170941644?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
学习快捷方式:get_object_or_404()
一种常见的习惯是使用get()并在对象不存在时引发404,Django为此提供了一个快捷方式.:
![](https://img-blog.csdn.net/20160102171606328?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
get_object_or_404()函数将一个Django模型作为它的第一个参数,任意数量的关键字参数作为它的第二个参数,它将这些关键字参数传递给模型管理器中的get()函数,如果对象不存在,他就引发http404异常.
使用模板系统:
将polls/detail.html改为:
![](https://img-blog.csdn.net/20160102172705309?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
显示为:
![](https://img-blog.csdn.net/20160102172732256?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
移除模板中的硬编码的URLs:
在polls/index.html中的硬编码指向性链接为:
![](https://img-blog.csdn.net/20160102173158654?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
转换为:
![](https://img-blog.csdn.net/20160102173223317?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
它的工作原理是在polls.urls模块里查找指定的URL的定义.你知道名为"detail"URL的准确定义在:
![](https://img-blog.csdn.net/20160102173615107?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如果想更改URL名字 则在这里面添加就行了.
带有名空间的URL名字:
如果由多个应用是,Django如何区别URL名字?答案是在主URLconf中添加命名空间.在mysite/urls.py文件中,添加命名空间就行:
![](https://img-blog.csdn.net/20160102174343475?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这时将polls/index.html中的:
![](https://img-blog.csdn.net/20160102174422734?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
改为:
博客首页 —— 显示最新发表的博客。
博客“详细”页面 —— 单篇博客的固定链接页面。
基于年份的归档页面 —— 显示某给定年份里所有月份发表过的博客。
基于月份的归档页面 —— 显示在给定月份中发表过博客的所有日期。
基于日期的归档页面 —— 显示在给定日期中发表过的所有博客名称。
评论功能 —— 为一篇给定博客发表评论。
在投票应用中将有4个视图:
Question首页----显示最新发布的几个Question
Question"详细"页面-- 显示单个Questlion的具体内容
Question"结果"页面---显示Question的投票结果
编辑第一个视图:
打开polls/views.py 文件(这就是视图中的执行代码):
写完执行代码后需要后期的包装配置,以便使其正常运转,在polls文件中新建一个urls.py文件:
应用中的urls.py仅是应用里面的,要想让外面的大框架知道,需要只会大框架,(让大框架中配置,以使其被广大人民知道.):在mysite文件中对urls.py进行配置:
由此,我们可以编辑更多的视图了:
编辑之后还要重新对应用中的urls.py进行配置:
不必对mysites/urls.py进行配置了,因为之前写第一个应用的时候已经对其进行配置了.
现在编写拥有实际功能的视图:
每个视图只负责处理两件事中的一件:返回一个包含所请求的页面内容HttpResponse对象,或者是一个抛出的Http404异常.
为了方便,我们使用之前的学过的数据库API,在polls/views.py更改:
最终显示为:
这里出现一个问题,页面的设计被硬编码到视图中,如果你想更改页面的外观,就得编码这段python代码,因此,我们用Django的模板系统,通过创建一个叫做templates的目录.django将在这里查找模板.
首先,在polls文件中创建templates的目录.Django将在这里查找模板(注意和在mysites中创建的templates文件不同)
项目中的templates设置描述了Django将如何加载并渲染模板.默认的设置文件settings.py配置一个DajngoTemplates后端,其中将APP_DIRS选项设置为True.按照惯例,DjangoTemplates在INSTALLED_APPS所包含的每个应用的目录下查找名为"templates"子目录.这就是我们为什么没有像之前所做的那样修改DIRS,Djagno也能找到模板的原因.
在创建的templates文件中建立polls文件,在创建的polls文件中建立index.html文件.(polls/templates/polls/index.html):
我们更新polls/views.py中的index视图来使用模板:polls/views.py:
浏览器界面为:
这里讲一下快捷方式render():
常见的一个习惯是载入一个模板\填充一个Context然后返回一个含有模板渲染结果的HttpResponse对象.Django为此提供一个快捷方式.下面是一个重写后的index()视图:
一旦我们应用了快捷函数,就不需要再导入loader RequestContext和Httpresponse.render()函数将请求对象设置为第一个参数,模板的名字作为它的第二个参数,一个字典作为它可选的第三个参数.它返回一个HttpResponse对象,含有用给定的Context渲染后的模板.
引发一个404错误:
处理Question详细页面的视图--显示Question内容界面:
显示为:
学习快捷方式:get_object_or_404()
一种常见的习惯是使用get()并在对象不存在时引发404,Django为此提供了一个快捷方式.:
get_object_or_404()函数将一个Django模型作为它的第一个参数,任意数量的关键字参数作为它的第二个参数,它将这些关键字参数传递给模型管理器中的get()函数,如果对象不存在,他就引发http404异常.
使用模板系统:
将polls/detail.html改为:
显示为:
移除模板中的硬编码的URLs:
在polls/index.html中的硬编码指向性链接为:
转换为:
它的工作原理是在polls.urls模块里查找指定的URL的定义.你知道名为"detail"URL的准确定义在:
如果想更改URL名字 则在这里面添加就行了.
带有名空间的URL名字:
如果由多个应用是,Django如何区别URL名字?答案是在主URLconf中添加命名空间.在mysite/urls.py文件中,添加命名空间就行:
这时将polls/index.html中的:
改为:
相关文章推荐
- Django学习笔记 Day One
- 【DP】good bye 2015 D
- CF Good Bye 2015 C- New Year and Domino(CF611C)
- Django 数据模型的字段列表整理
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之三InCallService完成framework层每路通话转换
- 第二章:CallsManager调用 startOutgoingCall开始拨号流程之一CallsManager完成每路电话的控制管理
- 让谷歌浏览器Google Chrome支持eWebEditor的方法
- CF Good Bye 2015 A- New Year and Days(CF611A)
- LSGO软件技术团队2015~2016学年第十三周(1123~1129)总结
- LSGO软件技术团队2015~2016学年第十二周(1116~1122)总结
- LSGO软件技术团队2015~2016学年第十一周(1109~1115)总结
- LSGO软件技术团队2015~2016学年第十周(1102~1108)总结
- LSGO软件技术团队2015~2016学年第九周(1026~1101)总结
- WebGoat实验环境搭建 - 2016.01.01
- Codeforces Good Bye 2015 E. New Year and Three Musketeers
- 微软雅虎猛追,Google搜索市场份额跌至64%
- Codeforces Good Bye 2015
- ubuntu 下Linpack安装,MPI+GOTOBLAS2
- GOLANG打包
- HDU1533-Going Home 简单KM