查看“Python Web开发:动态页面渲染”的源代码
←
Python Web开发:动态页面渲染
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==背景== Django提供了方便的ORM操作来对数据库模型进行管理。 当用户在访问荣誉资质页面时,请求通过路由URL分发至views.py文件中的honor()函数进行处理 该函数收到请求后首先从数据库中取出Awars模型的所有数据,然后将数据嵌入到honor.html模板文件中。 ==实训步骤== ===视图函数=== 重新编辑views.py中的honor()函数如下: <nowiki> from django.shortcuts import render from django.shortcuts import HttpResponse from .models import Award # Create your views here. def survey(request): '''html = '<html><body>企业概况</body></html>' return HttpResponse(html)''' return render(request,'survey.html',{ 'active_menu':'about', 'sub_menu':'survey', }) def honor(request): '''html = '<html><body>荣誉资质</body></html>' return HttpResponse(html)''' awards = Award.objects.all() return render(request,'honor.html',{ 'active_menu':'about', 'sub_menu':'honor', 'awards':awards, }) </nowiki> objects.all()函数:得到一个查询集。 *objects.all()函数:得到一个查询集。 *objects.filter()函数:返回符合条件的数据 *objects.exclude()函数,返回不符合条件的数据 *objects.order_by(),对查询结果集进行排序 *objects.values(),返回一个列表,每个元素为一个字典 *objects.reverse(),对排序的结果反转 *objects.get() 返回一个满足条件的对象,如果没有找到或找到多个,会引发异常 *objects.count() 返回查询集中对象的数目 *objects.first() 返回第一条数据 *objects.last() 返回最后一条数据 *objects.exists() 判断查询的数据是否存在 ===编辑网页模板=== ====传统静态网页==== honor.html : <nowiki> {% extends "base.html" %} {% load staticfiles %} {% block title %} 荣誉资质 {% endblock %} {% block content %} <!-- 广告横幅 --> <div class="container-fluid"> <div class="row"> <img class="img-responsive model-img" src="{% static 'img/about.jpg' %}"> </div> </div> <!-- 主体内容 --> <div class="container"> <div class="row row-3"> <!-- 侧边导航栏 --> <div class="col-md-3"> <div class="model-title"> 公司简介 </div> <div class="model-list"> <ul class="list-group"> <li class="list-group-item" id="survey"> <a href="{% url 'aboutApp:survey' %}">企业概况</a> </li> <li class="list-group-item" id="honor"> <a href="{% url 'aboutApp:honor' %}">荣誉资质</a> </li> </ul> </div> </div> <!-- 说明文字和图片 --> <div class="col-md-9"> <div class="model-details-title"> 荣誉资质 </div> <div class="row"> <div class="col-sm-6 col-md-4"> <div class="thumbnail"> <img src="{% static 'img/honor1.jpg' %}"> <div class="caption"> <p>2011年加入互联网协会</p> </div> </div> </div> <div class="col-sm-6 col-md-4"> <div class="thumbnail"> <img src="{% static 'img/honor1.jpg' %}"> <div class="caption"> <p>2011年加入互联网协会</p> </div> </div> </div> </div> </div> </div> </div></nowiki> ====动态网页==== 静态网页是写死的, 动态网页是从数据库调出的动态数据, 因此,为了使网页内容更加灵活,我们更建议使用动态网页。 honor.html: <nowiki> {% extends "base.html" %} {% load staticfiles %} {% block title %} 荣誉资质 {% endblock %} {% block content %} <!-- 广告横幅 --> <div class="container-fluid"> <div class="row"> <img class="img-responsive model-img" src="{% static 'img/about.jpg' %}"> </div> </div> <!-- 主体内容 --> <!-- 主体内容 --> <div class="container"> <div class="row row-3"> <!-- 侧边导航栏 --> <div class="col-md-3"> <div class="model-title"> 公司简介 </div> <div class="model-list"> <ul class="list-group"> <li class="list-group-item" id="survey"> <a href="{% url 'aboutApp:survey' %}">企业概况</a> </li> <li class="list-group-item" id="honor"> <a href="{% url 'aboutApp:honor' %}">荣誉资质</a> </li> </ul> </div> </div> <!-- 说明文字和图片 --> <div class="col-md-9"> <div class="model-details-title"> 荣誉资质 </div> <div class="row"> {% for award in awards %} <div class="col-sm-6 col-md-4"> <div class="thumbnail"> <img src="{{award.photo.url}}"> <div class="caption"> <p>{{award.description}}</p> </div> </div> </div> {% endfor %} </div> </div> </div> </div> {% endblock %}</nowiki> 上述代码通过<nowiki>{% for award in awards %}</nowiki>语句逐个地读取awards中的每一条数据并赋值到新的临时变量awardz中,每个award都包含一项photo和description 数据。在缩略图中分别使用模板变量<nowiki>{{award.photo.url}}</nowiki>和<nowiki>{{award.description}}</nowiki>对<nowiki><img>的src属性和段落<p>赋予动态内容。</nowiki> [[文件:python21050301.png|600px]] ===如何正确地显示图片=== 上述代码中文字已正常显示,但是图片没有。 原因使debug模式下没有将动态资源路径MEDIA_URL添加到静态路由static下。 编辑配置文件夹hengDaProject下的urls.py文件,添加代码如下: <nowiki>from django.conf import settings from django.conf.urls.static import static if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)</nowiki> [[文件:python21050302.png|600px]]
返回至
Python Web开发:动态页面渲染
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息