Django文档简化版 |
您所在的位置:网站首页 › 创建一个基本简历 › Django文档简化版 |
续上一篇,这一篇 着重于创建公共接口——“视图” 第三部分——3、视图和模板 1、概述2、编写更多视图原理——django依次访问了什么文件 3、写一个真正有用的视图一个快捷函数 render() render——渲染 4、抛出404错误一个快捷函数 get_object_or_404() 5、使用模板系统6、去除模板中的硬编码URL7、为URL名称添加命名空间 1、概述 Django中视图——一类具有相同功能和模板的网页的集合网页和其他内容由视图派生而来。视图是一个python函数or方法根据用户请求的URL(域名之后的部分)来选择使用哪个视图将URL与视图关联起来——URLconfs(将URL映射到视图)来配置 2、编写更多视图在 polls/views 增加 def detail(request,question_id): return HttpResponse("You're loooking at question %s." % question_id) def results(request,question_id): response="You're looking at the results of question & s" return HttpResponse(response % question_id) def vote(request,question_id): return HttpResponse("You're voting on question %s." % question_id)将视图添加进 polls/urls 模块中 urlpatterns=[ path("",views.index,name="index"), path("/",views.detail,name="detail"), path("/results/",views.results,name="results"), path("/vote/",views.vote,name="vote"), ]接下来访问“/polls/34/”它将运行detail()函数,显示为: ![]() ![]() 总结: 1、Django加载项目的URL配置:mysite/urls.py。 2、匹配到包含的应用URL配置:polls/urls.py。 3、解析URL路径参数并调用相应视图函数:将 question_id 解析为 34,并调用 detail 视图函数。 4、视图函数处理请求并返回响应:detail 函数生成并返回响应。 3、写一个真正有用的视图视图必须做的只有两件事:返回一个包含被请求页面的HttpResponse对象。或者抛出一个异常。 视图还可以做什么?视图可以从数据库读记录,可以使用一个模板引擎,,可以生成一个pdf文件,可以输出一个xml,可以创建一个zip文件,可以做任何你想做的事情。 接下来修改polls/views/index()函数,显示最近的五个问题 def index(request): latest_question_list=Question.objects.order_by("-pub_date")[:5] output=",".join([q.question_text for q in latest_question_list]) return HttpResponse(output)当我们说页面的设计“写死”在视图函数里时,意思是视图函数中包含了生成页面内容的具体代码。如果你想修改页面的外观或布局,就必须直接编辑这些视图函数。这种做法的问题在于: 1、难以维护和更新:每次需要修改页面的外观或布局时,都必须直接更改视图函数中的代码,可能导致代码变得复杂和难以维护。 2、代码与内容耦合:视图函数不仅负责处理请求逻辑,还负责生成HTML内容,使得业务逻辑和页面设计耦合在一起。 3、复用性差:如果不同的视图函数需要共享相同的HTML结构或样式,每个视图函数都必须重复相同的HTML代码,导致代码重复和不易复用。 所以要使用Django的模板系统,只需要创建一个视图,就可以将页面的设计从代码里分离出来 首先,创建polls/templates目录。Django会在这个目录里查找模板文件 接着创建templates/polls/index.html 避免模板文件名称冲突,我们应该将模板文件放在与应用同名的子文件夹中。这样做的好处是,如果你有多个应用程序,它们可以使用相同名称的模板文件而不会互相冲突命名空间:为了帮助Django区分不同应用的模板,我们将模板文件放在与应用同名的子文件夹中。这就是所谓的命名空间。例如,对于 polls 应用,我们应该在 polls/templates 目录下再创建一个 polls 子目录。在index.html文件中: Polls Index {% if latest_question_list %} {% for question in latest_question_list %} |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |