`
qzriso
  • 浏览: 242409 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Django笔记7(通用视图)

阅读更多
1. 一个呈现静态“关于”页面的URLconf

from django.conf.urls.defaults import *
from django.views.generic.simple import direct_to_template

urlpatterns = patterns('',
    ('^about/$', direct_to_template, {
        'template': 'about.html'
    })
)

注意:页面有中文,模板文件请使用UTF-8编码

2. 在我们自己的视图中重用它

from django.conf.urls.defaults import
from django.views.generic.simple import direct_to_template
from mysite.views import *

urlpatterns = patterns('',
    ('^about/$', direct_to_template, {
        'template': 'about.html'
    }),
    ('^about/(\w+)/$', about_pages),
)


from django.http import Http404
from django.template import TemplateDoesNotExist
from django.views.generic.simple import direct_to_template

def about_pages(request, page):
    try:
        return direct_to_template(request, template="about/%s.html" % page)
    except TemplateDoesNotExist:
        raise Http404()


3. 对象的通用视图

from django.views.generic import list_detail
from mysite.books.models import *
publisher_info = {
    "queryset" : Publisher.objects.all(),
    "template_object_name" : "publisher",
    "template_name" : "books/publisher_list.html",
    "extra_context" : {"book_list" : Book.objects.all()}
}
urlpatterns = patterns('',
    (r'^publishers/$', list_detail.object_list, publisher_info)
)

{% extends "base.html" %}

{% block content %}
    <h2>Publishers</h2>
    <ul>
        {% for publisher in publisher_list %}
            <li>{{ publisher.name }}</li>
        {% endfor %}
    </ul>
{% endblock %}

注意publisher_info各参数的默认值,template_object_name默认为object_list,template_name默认为books/publisher_list.html,注意结果的缓存问题

4. 显示某个出版商的所有书籍

urlpatterns = patterns('',
    (r'^publishers/$', list_detail.object_list, publisher_info),
    (r'^books/(\w+)/$', books_by_publisher),
)

from django.views.generic import list_detail
from mysite.books.models import *
def books_by_publisher(request, name):

    # Look up the publisher (and raise a 404 if it can't be found).
    try:
        publisher = Publisher.objects.get(name__iexact=name)
    except Publisher.DoesNotExist:
        raise Http404

    # Use the object_list view for the heavy lifting.
    return list_detail.object_list(
        request,
        queryset = Book.objects.filter(publisher=publisher),
        template_name = "books/books_by_publisher.html",
        template_object_name = "books",
        extra_context = {"publisher" : publisher}
    )

{% extends "base.html" %}

{% block content %}
    <h2>{{publisher.name}} Book List</h2>
    <ul>
        {% for book in books_list %}
            <li>{{ book.title }}</li>
        {% endfor %}
    </ul>
{% endblock %}
分享到:
评论

相关推荐

    Django学习笔记.pdf

    **知识点7:Django与数据库交互** - **连接数据库:** - Django支持多种数据库,包括SQLite、MySQL、PostgreSQL等。 - 在`settings.py`中配置数据库连接参数。 - 使用Django ORM进行数据库操作。 以上就是从...

    django-mongogeneric:mongodb的基于类的通用视图

    django mongogeneric mongoengine文档的基于类的通用视图。笔记并非Django提供的所有视图都已实现。 如果发现缺少mixin或视图,请随时实现它们并提供拉取请求:-)要求的Django&gt; = 1.3 &gt; = 0.6 已实施的意见详细视图...

    基于Django的web记事本.zip

    通过以上描述,我们可以了解到,这个基于Django的Web记事本项目涵盖了Web开发中的许多关键知识点,不仅涉及到Django框架的核心组件,也包括了Web开发的通用流程,对于提升开发者对Web应用开发的理解和实践能力具有...

    天天生鲜项目笔记.docx

    1. **通用类视图基类**: Django提供了基础的类视图基类`django.views.generic.View`,这个基类为所有的类视图提供了一些基本的功能和方法。 2. **路由配置**: 在`urls.py`文件中,通过调用类视图的`as_view()`方法来...

    ForPresenTation_Django

    【压缩包子文件的文件名称列表】"ForPresenTation_Django-main" 提示我们这是一个主要的文件夹,可能包含了整个Django教程或演示的主体内容,比如代码示例、幻灯片、笔记或其他辅助材料。 基于以上信息,我们可以...

    Python课堂笔记_python_源码

    10. **Web开发**:Python的Django和Flask框架常用于Web应用开发,它们提供了模型-视图-控制器(MVC)架构,简化了Web应用程序的构建。 11. **科学计算与数据分析**:Python在科学计算领域有广泛的应用,如使用NumPy...

    自我学习笔记--LUA;python:网络编程等

    Django则是一个全功能的Web框架,提供模型-视图-控制器(MVC)架构,支持数据库操作、表单处理和身份验证等功能。 在【描述】中提到的“自我学习笔记”,意味着这份资料可能包含了作者在学习过程中整理的概念、代码...

    简易网银管理系统搭建过程与结果演示

    - 由于采用Python而非Java,该项目的通用性较低,可能不适合一些企业需求。 这个简易网银管理系统展示了如何利用Python和Django构建Web应用,以及如何与MySQL数据库进行交互。虽然存在一些局限性,但该项目为初学...

    全栈工程师-python作业.zip

    Django是一个功能完备的MVC框架,提供模型-视图-控制器架构,内置ORM(对象关系映射),支持数据库操作,同时包含身份验证和管理后台等功能。Flask则更轻量级,适用于快速构建小型应用,可通过插件扩展功能。 3. **...

    Intro-to-Python:Python代码写作基础

    学习Django意味着深入理解如何定义模型来存储数据,创建视图来处理请求,以及配置模板来呈现复杂网页。 **Jupyter Notebook** Jupyter Notebook是一个交互式计算环境,允许开发者结合代码、文本、数学方程式和可视...

    flask资料-B站.zip

    这个"flask资料-B站.zip"压缩包文件包含了与Flask相关的学习资料,可能是课程笔记、代码示例或者讲解视频的补充材料。通过视频链接()可以获取更深入的讲解和实践指导。 **Flask的核心概念:** 1. **微型框架**:...

    Curso-de-Python:Curso em python

    Django提供了一个MVC(模型-视图-控制器)架构,而Flask则更为轻量级,适合快速构建小型应用。 在数据分析领域,Python的Pandas库提供了DataFrame对象,便于数据清洗、预处理和分析。NumPy则提供了高效的多维数组...

    FinalProcesosNumericos:仓库用于物质数值过程的最终工作。 电子商务

    Python作为一种通用且易学的编程语言,其丰富的库资源使得数值计算变得简单易行。在"FinalProcesosNumericos"中,开发者可能利用了如NumPy、SciPy和Pandas等Python库,它们提供了强大的数据处理和数学运算功能,可以...

Global site tag (gtag.js) - Google Analytics