• python27+django1.9添加api


    我们进入Python的交互 shell 并使用Django提供的API。要进入Python shell,使用python manage.py shell

    使用这个而不是简单的输入"python",是因为 manage.py 会帮你创建项目的环境。“创建项目环境”包括两件事:
    • 把polls添加到sys.path里。为了灵活性,Django中的模块通过加点的路径来引用(例如'polls.models')。为了实现这个,polls包必须在sys.path里。
      我们已经遇到过一个这样的例子了:the INSTALLED_APPS设置里的列表就是使用点路径表示法。
    • 设置DJANGO_SETTINGS_MODULE环境变量,为Django指定了你的settings.py文件的路径。

    省略manage.py

    在shell里面时,可以 探索 下database API,这招可以用来检验刚才的模型是否可以正确调用数据库
    >>> from polls.models import Poll, Choice # 导入我们刚写的模型。
    # 系统里还没有poll。
    >>> Poll.objects.all()
    []
    # 创建一个新poll。
    >>> import datetime
    >>> p = Poll(question="What's up?", pub_date=datetime.datetime.now())
    # 把对象保存进数据库里。你需要明确调用save()。
    >>> p.save()

    from start.models import Start
    Start.objects.all()
    import datetime
    p = Start(question="What's up?", pub_date=datetime.datetime.now())
    p.save()
    

    也就是上面这个代码框的内容,依次输入处理即可,无论提示什么,只要数据库里生成表,基本就是成功了

    # 现在它有个ID了。注意这里也可能显示1L而不是1,
    # 取决于你使用的是什么数据库。不过这没什么打不了,
    # 它只是表明数据库更倾向于把整型返回成Python的长整型对象。
    >>> p.id
    1
    # 通过Python属性访问数据库列
    >>> p.question
    "What's up?"
    >>> p.pub_date
    datetime.datetime(2007, 7, 15, 12, 00, 53)
    # 通过修改属性来修改值,然后调用save()。
    >>> p.pub_date = datetime.datetime(2007, 4, 1, 0, 0)
    >>> p.save()
    # objects.all()显示数据库所有的poll。
    >>> Poll.objects.all()
    [<Poll: Poll object>]等等。 <Poll: Poll object> 完全不能表现出这个对象的 有用信息 。我们可以编辑poll模型(在文件 polls/models.py 里)添加一个__unicode__() 方法 给 Poll 和 Choice 来解决这个问题:
    class Poll(models.Model):
    # ...
    def __unicode__(self):
    return self.question
    class Choice(models.Model):
    # ...
    def __unicode__(self):
    return self.choice为你的模型添加__unicode__()方法是很有必要的。不仅是为了让你自己更好理解交互提示,而且因为对象的表现的使用会贯穿于整个Django自动产生的admin。
    为什么是__unicode__()而不是__str__()?

    如果你熟悉Python的话,你可能会更喜欢在你的类里添加__str__()而不是__unicode__()方法。我们这里使用__unicode__()是因为Django模型默认使用Unicode,所有保存在数据库的数据在返回的时候都会转化成Unicode。

    Django模型有一个默认的__str__()方法叫__unicode__(),它会把结果集转化成UTF-8字节字符串。在各个意味着unicode(p)会返回一个Unicode字符串,而str(p)会返回一个普通的UTF-8编码的字符串。

    如果你还是觉得莫名其妙的话,记得把__unicode__()方法加进你的模型中就行了,幸运的话,一切都会如你所想工作。

    注意这些都是普通的Python方法,让我们添加一个自定义的方法,用作示范:
    import datetime
    # ...
    class Poll(models.Model):
    # ...
    def was_published_today(self):
    return self.pub_date.date() == datetime.date.today()添加 import datetime 会引用Python的 datetime 模块。 保存这些修改然后再次运行 python manage.py shell 新开一个Python交互shell:
    >>> from polls.models import Poll, Choice
    # 确保我们新加的__unicode__()正常工作。
    >>> Poll.objects.all()
    [<Poll: What's up?>]
    # Django提供了丰富的数据库查找API,
    # 这些API完全由关键字参数驱动。
    >>> Poll.objects.filter(id=1)
    [<Poll: What's up?>]
    >>> Poll.objects.filter(question__startswith='What')
    [<Poll: What's up?>]
    # 获取年份为2007的poll。
    >>> Poll.objects.get(pub_date__year=2007)
    <Poll: What's up?>
    >>> Poll.objects.get(id=2)
    Traceback (most recent call last):
    ...
    DoesNotExist: Poll matching query does not exist.
    # 通过主键查找是很常用的一种方式,
    # 所以Django为这种查找方法提供一个便捷的方式。
    # 下面相当于Poll.objects.get(id=1)。
    >>> Poll.objects.get(pk=1)
    <Poll: What's up?>
    # 确认我们的自定义方法正常工作。
    >>> p = Poll.objects.get(pk=1)
    >>> p.was_published_today()
    False
    # 给Poll加上几个Choice。
    # 调用创建函数创建choice对象,会调用INSERT语句,
    # 把choice添加到已存choice的集合里,并返回这个新创建的Choice对象。
    # Django会创建一个集合保存外键关联,这个集合可以通过API进行访问。
    >>> p = Poll.objects.get(pk=1)
    # 显示关联的所有choice —— 目前还没有。
    >>> p.choice_set.all()

    还剩一些懒得搬运了,请参见http://blog.csdn.net/yelbosh/article/details/7530984

  • 相关阅读:
    《命运赋》
    CSS3中的 transform (变形)+Transition(转换) = animation(动画)
    c#进阶之泛型
    正则表达式运用
    查询某时间段的统计数据
    很好用的request转换为实体方法还有判断实体所有参数不能为空的方法
    http 协议集合,超级简单
    今天无意发现jquery的一个以前的误导
    IFRAM随内部长宽高变化
    就最近学习MVC4.0的页面用法学到的东西
  • 原文地址:https://www.cnblogs.com/slqt/p/5154817.html
Copyright © 2020-2023  润新知