【python – Django自动为现有数据库表创建主键】教程文章相关的互联网学习教程文章

在Django的视图中使用数据库查询的方法

在视图中也有笨方法可以从数据库中获取数据。 很简单: 用现有的任何 Python 类库执行一条 SQL 查询并对结果进行一些处理。 在本例的视图中,我们使用了 MySQLdb 类库(可以从 http://www.djangoproject.com/r/python-mysql/ 获得)来连接 MySQL 数据库,取回一些记录,将它们提供给模板以显示一个网页:from django.shortcuts import render_to_response import MySQLdbdef book_list(request):db = MySQLdb.connect(user=me, db=...

详解Django中的过滤器

就象本章前面提到的一样,模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符,如下所示:{{ name|lower }}显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本为小写。 过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入,如此下去。 下面的例子实现查找列表的第一个元素并将其转化为大写。{{ my_list|first|upper }}有些过滤器有参数。 过滤器的...

Python的Django框架中的Context使用

一旦你创建一个 Template 对象,你可以用 context 来传递数据给它。 一个context是一系列变量和它们值的集合。 context在Django里表现为 Context 类,在 django.template 模块里。 她的构造函数带有一个可选的参数: 一个字典映射变量和它们的值。 调用 Template 对象 的 render() 方法并传递context来填充模板:>>> from django.template import Context, Template >>> t = Template(My name is {{ name }}.) >>> c = Context({na...

Python的Django框架中的URL配置与松耦合

现在是好时机来指出Django和URL配置背后的哲学: 松耦合 原则。 简单的说,松耦合是一个 重要的保证互换性的软件开发方法。 Django的URL配置就是一个很好的例子。 在Django的应用程序中,URL的定义和视图函数之间是松 耦合的,换句话说,决定URL返回哪个视图函数和实现这个视图函数是在两个不同的地方。 这使得 开发人员可以修改一块而不会影响另一块。 例如,考虑一下current_datetime视图。 如果我们想把它的URL 从原来的 /time/...

详解Python的Django框架中的模版相关知识

HTML被直接硬编码在 Python 代码之中。def current_datetime(request):now = datetime.datetime.now()html = "It is now %s." % nowreturn HttpResponse(html)尽管这种技术便于解释视图是如何工作的,但直接将HTML硬编码到你的视图里却并不是一个好主意。 让我们来看一下为什么:对页面设计进行的任何改变都必须对 Python 代码进行相应的修改。 站点设计的修改往往比底层 Python 代码的修改要频繁得多,因此如果可以在不进行 Pytho...

Django中使用locals()函数的技巧

对 current_datetime 的一次赋值操作:def current_datetime(request):now = datetime.datetime.now()return render_to_response(current_datetime.html, {current_date: now})很多时候,就像在这个范例中那样,你发现自己一直在计算某个变量,保存结果到变量中(比如前面代码中的 now ),然后将这些变量发送给模板。 尤其喜欢偷懒的程序员应该注意到了,不断地为临时变量和临时模板命名有那么一点点多余。 不仅多余,而且需要额外...

在Python的Django框架中调用方法和处理无效变量

方法调用行为 方法调用比其他类型的查找略为复杂一点。 以下是一些注意事项:在方法查找过程中,如果某方法抛出一个异常,除非该异常有一个 silent_variable_failure 属性并且值为 True ,否则的话它将被传播。如果异常被传播,模板里的指定变量会被置为空字符串,比如:>>> t = Template("My name is {{ person.first_name }}.") >>> class PersonClass3: ... def first_name(self): ... raise AssertionError, "foo" >>> p ...

Django查找网站项目根目录和对正则表达式的支持【图】

如果你想通过http://127.0.0.1:8000/看网站根目录你将看到一个404错误消息。Django不会增加任何东西在网站根目录,在任何情况下这个URL都不是特殊的 就像在URLconf中的其他条目一样,它也依赖于指定给它的URL模式. 尽管匹配网站根目录的URL模式不能想象,但是还是值得提一下的. 当为网站根目录实现一个视图,你需要使用URL模式`` ‘^$`` , 它代表一个空字符串。 例如:from mysite.views import hello, my_homepage_viewurlpatterns...

在Django中创建第一个静态视图

正如我们的第一个目标,创建一个网页,用来输出这个著名的示例信息:Hello world.如果你曾经发布过Hello world页面,但是没有使用网页框架,只是简单的在hello.html文本文件中输入Hello World,然后上传到任意的一个网页服务器上。 注意,在这个过程中,你已经说明了两个关于这个网页的关键信息: 它包括(字符串 "Hello world")和它的URL( http://www.example.com/hello.html , 如果你把文件放在子目录,也可能是 http://www.exa...

Python的Django框架中的数据过滤功能

我们很少会一次性从数据库中取出所有的数据;通常都只针对一部分数据进行操作。 在Django API中,我们可以使用`` filter()`` 方法对数据进行过滤:>>> Publisher.objects.filter(name=Apress) []filter() 根据关键字参数来转换成 WHERE SQL语句。 前面这个例子 相当于这样:SELECT id, name, address, city, state_province, country, website FROM books_publisher WHERE name = Apress;你可以传递多个参数到 filter() 来缩小选取...

在Django的URLconf中进行函数导入的方法

看下这个 URLconf:from django.conf.urls.defaults import * from mysite.views import hello, current_datetime, hours_aheadurlpatterns = patterns(,(r^hello/$, hello),(r^time/$, current_datetime),(r^time/plus/(\d{1,2})/$, hours_ahead), )在 URLconf 中的每一个入口包括了它所关联的视图函数,直接传入了一个函数对象。 这就意味着需要在模块开始处导入视图函数。 但随着 Django 应用变得复杂,它的 URLconf 也在增长,并...

在Python的Django框架中加载模版的方法

为了减少模板加载调用过程及模板本身的冗余代码,Django 提供了一种使用方便且功能强大的 API ,用于从磁盘中加载模板, 要使用此模板加载API,首先你必须将模板的保存位置告诉框架。 设置的保存文件就是settings.py。 如果你是一步步跟随我们学习过来的,马上打开你的settings.py配置文件,找到TEMPLATE_DIRS这项设置吧。 它的默认设置是一个空元组(tuple),加上一些自动生成的注释。TEMPLATE_DIRS = (# Put strings here, like...

在Python的Django框架中更新数据库数据的方法

先使用一些关键参数创建对象实例,如下:>>> p = Publisher(name=Apress, ... address=2855 Telegraph Ave., ... city=Berkeley, ... state_province=CA, ... country=U.S.A., ... website=http://www.apress.com/)这个对象实例并 没有 对数据库做修改。 在调用`` save()`` 方法之前,记录并没有保存至数据库,像这样:>>> p.save()在SQL里,这大致可以转换成这样:INSERT INTO books_publisher(name, address...

Django的URLconf中使用缺省视图参数的方法

一个方便的特性是你可以给一个视图指定默认的参数。 这样,当没有给这个参数赋值的时候将会使用默认的值。 例子:# urls.pyfrom django.conf.urls.defaults import * from mysite import viewsurlpatterns = patterns(,(r^blog/$, views.page),(r^blog/page(?P\d+)/$, views.page), )# views.pydef page(request, num=1):# Output the appropriate page of blog entries, according to num.# ...在这里,两个URL表达式都指向了同一...

Django框架下在视图中使用模版的方法

打开current_datetime 视图。 以下是其内容:from django.http import HttpResponse import datetimedef current_datetime(request):now = datetime.datetime.now()html = "It is now %s." % nowreturn HttpResponse(html)让我们用 Django 模板系统来修改该视图。 第一步,你可能已经想到了要做下面这样的修改:from django.template import Template, Context from django.http import HttpResponse import datetimedef current_d...