- 写几个有用的视图
每个视图负责做两件事情,返回一个HttpResponse对象包含被请求的页面的内容,或者抛出一个异常,例如Http404。剩下的视图做什么取决于你自己。
你的视图可以从数据库中读记录,或者不读。可以利用一个模板系统比如django自带的或者第三方的Python模板系统,或者不用。可以实时生成一个pdf文件,输出XML,创建一个ZIP压缩包。所有你想做的一切都可以做,使用任何你想使用python类库。
方便起见,我们使用django自带的数据库API,让我们简单的看一个index()这个视图,这个视图用来展示最新的5条逗号分割的,根据出版时间排序的questions。
from django.http import HttpResponse
from polls.models import Poll
def index(request):
latest_poll_list = Poll.objects.order_by(‘-pub_date‘[:5])
output = ‘,‘.join([p.question for p in latest_poll_list])
return HttpResponse(output)
这里有一个问题,页面的设计是被硬编码在视图内了。如果你想改变页面的外观,你将不得不修改这个视图的代码。所以我们使用django的模板系统通过创建一个视图可使用的模板,来进行视图和页面分离设计。
首先,创建一个名字为templates的文件夹在你的polls文件夹中。django将从templates中寻找模板。
django 的TEMPLATE_LOADERS配置包含一知道怎么从各种来源中导入模板的可调用的列表。其中一个默认的加载器是 django.template.loaders.app_drectories.Loader,这个加载器从INTALLED_APPS安装的每个 app的子目录中寻找"templates"文件夹,这是为什么django知道怎么寻找polls的templates文件夹,即使我们不修改 TEMPLATE_DIRS
我么可以把所有的模板放在一个大的templates文件夹中,并且这样也能一样出色的工作。但是这些模板属于polls这个app,所以不象我们先前创建的admin这个app的templates,我们将把这个template放在app的templates
在我们刚创建的templates文件夹中,创建另一个文件夹polls,在该polls文件夹下创建index.html.polls/templates/polls/index.html。因为app_directories模板加载器的工作原理,你可以在django中以polls/index.html的方式进行引用。
- 模板命名空间:
现在我们可以直接把我们的模板放进polls/templates,而不是创建另一个polls子目录。但是这个帧的是一个坏主意。Django将选择名字匹配的第一个模板,如果你有一个同名的模板在其他app中,django将不能区分他们,。我们需要能找出所需要的那个模板,最简单的途径,就是通过给模板命名(namespace),也就是说通过把这些模板放进另外命名为应用本身的文件夹中。
That is, by putting those templates inside another directory named for the application itself.
- 把下面的代码谢晋index.html中
{%if latest_poll_list%}
<ul>
{%for poll in latest_poll_lis%}
<li><a href="/polls/{{poll.id}}/">{{poll.question}}</a></li>
{%endfor%}
{%else%}
<p>No polls ate available</p>
{%endif%}
- 现在让我们修改下视图中的代码
from django.http import HttpResponsefrom django.template import RequestContext,loader
from polls.models import Poll
def index(request):
latest_poll_list = Poll.objects.order_by("-pub_date")[:5]
template = loader.get_template("polls/index.html")
content = RequestContext(request,{
‘latest_poll_list‘:latest_poll_list,
})
return HttpResponse(template.render(context))
django官方文档1.6学习笔记-编写你的第一个django程序<2>
时间: 2024-10-19 10:10:38
django官方文档1.6学习笔记-编写你的第一个django程序<2>的相关文章
django官方文档1.6学习笔记-编写你的第一个django程序
运行环境 centos6.5 django1.6 python2.7.8 python -c "import django;print djang.get_version()" or django.VERSION 创建django项目: django-admin.py startproject mysite 目录结构如下: mysite/ ###这个名字对django命名成什么都没关系. manage.py
Swift -- 官方文档Swift-Guides的学习笔记
在经历的一段时间的郁闷之后,我发现感情都是虚伪的,只有代码是真实的(呸) 因为看了swift语法之后依然不会用swift,然后我非常作死的跑去看官方文档,就是xcode里自带的help>documentation and API reference 其中的swift里的guide 这里主要总结一下里面每一章讲了什么,还有自己学到的东西和需要研究的东西 part 2:Building a Basic UI work with view controllers 关于比较基础的viewDidLoad,
Django官方文档学习
Django 1.10官方文档:https://docs.djangoproject.com/en/1.10/intro/tutorial01/ 1.查看django版本 python -m django --version 2.创建项目 django-admin startproject mysite 3.调试工程 python manage.py runserver [8080/0.0.0.0:8000] 4.创建APP python manage.py startapp polls 5.编
读vue-cli3 官方文档的一些学习记录
原来一直以为[email protected] 就是创建模板的工具,读了官方文档才知道原来这么有用,不少配置让我长见识了 Prefetch 懒加载配置 懒加载相信大家都是知道的,使用Import() 语法就可以在需要的时候加载了,但是读了官方文档Prefetch一节后,发现事情并没有想象的那么简单. 文档写的很清楚,Prefetch是在空闲的时候就加载一些不着急的文件,并且import默认是加上了Prefetch的,也就是说你使用了import可能并不是你想要的结果(比如用户点击某个按钮才触发加
django官方文档读书笔记
写在前面:这算是第二次读英文原文文档,第一次是读scrapy,感觉还是要做笔记,好记性不如烂笔头,现在已经忘了scrapy文档讲了什么了,心疼.以后要多读多写 经过半年的基础学习(懒,拖延)终于来到web开发这一步,当时买了董大的web实战,准备是用flask来实现的,但是后面在逼乎上找到某培训班的django视频资源,所以最终还是决定用django. 看过各种对django的评价之后,个人总结django是一个已经高度框架化的框架了(笑),他的每一部分M,V,T都已经帮用户分好了,用户可自主选
Django官方文档学习2——数据库及模板
网址:https://docs.djangoproject.com/en/1.10/intro/tutorial02/ 1.扫描installed_apps,创建需要的数据库table python manage.py migrate 2.在APP中创建模板(models) from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_
django 官方文档下载
今天发现自己的django文件有点过时了,于是想去下载一份新,找了老半天才找到pdf的下载地址:于是把它下载下来,希望以后可以直接用. 一.进行django官方网站: 二.文档的pdf文件就在document 页面的右下脚: 三.送一条django-1.11.2的文档地址作为结尾吧: https://media.readthedocs.org/pdf/django/1.11.x/django.pdf ----
Django官方文档之Model层
一.模型继承 1.抽象基类继承: 抽象基类: 抽象基类主要是作为一个信息集合,用在许多模型拥有共同信息的场合,本质上只是一个存储信息的容器,数据库中不创建表结构,不能单独使用,子类通过继承来获得父 亲基类的字段和元类型数据,通过设置Meta类的abstract=True属性来声明为抽象基类,否则,不会自动变为抽象基类,现举例如下: 1 from django.db import models 2 3 class CommonInfo(models.Model):
Python学习笔记——2、创建第一个django应用
在helloworld工程的基础上,我们准备创建第一个基于web的django应用,把这个应用名字命名为demo 首先,是如何创建这个应用包,当然第一选择我们可以进入到cmd中,执行如下命令 python manage.py startapp demo 如果要在pycharm里面如何做呢: 还是要进入到Edit Configuration 在里面进行配置: 把demo换成其他名字,就是添加其他的应用,执行这个命令和进入到cmd里面去执行脚本的作用是一样的 执行完了即可见: 接下来,好的,让我们来