django开发注意点

1.每一个视图函数都有一个HttpResquest对象的参数,返回HttpResponse对象

2.从url中获取除了request的其他参数

   url(r '^time/(\d{1,2})/$', views.time)    其中(\d{1,2}) 就是传给视图函数time的参数

3.filter模糊匹配

      >>> Publisher.objects.filter(name__contains="press")
      []

namecontains 之间有双下划线。和Python一样,Django也使用双下划线来表明会进行一些魔术般的操作。这里,contains部分会被Django翻译成LIKE语句:

      SELECT id, name, address, city, state_province, country, website
      FROM books_publisher
      WHERE name LIKE '%press%';

4. get获取单个对象

     Publisher.objects.get(name=press)          当查询的结果是list时,会报错

5.限制返回的数据

另一个常用的需求就是取出固定数目的记录。 想象一下你有成千上万的出版商在你的数据库里, 但是你只想显示第一个。 你可以使用标准的Python列表裁剪语句:

    >>> Publisher.objects.order_by('name')[0]
    

这相当于:

    SELECT id, name, address, city, state_province, country, website
    FROM books_publisher
    ORDER BY name
    LIMIT 1;

类似的,你可以用Python的range-slicing语法来取出数据的特定子集:

     >>> Publisher.objects.order_by('name')[0:2]

这个例子返回两个对象,等同于以下的SQL语句:

    SELECT id, name, address, city, state_province, country, website
    FROM books_publisher
   ORDER BY name
   OFFSET 0 LIMIT 2;

注意,不支持Python的负索引(negative slicing):

   >>> Publisher.objects.order_by('name')[-1]
   Traceback (most recent call last):
   ...
   AssertionError: Negative indexing is not supported.

虽然不支持负索引,但是我们可以使用其他的方法。 比如,稍微修改 order_by() 语句来实现:

  >>> Publisher.objects.order_by('-name')[0]



你可能感兴趣的:(django框架)