翻译How To Tango With Django 1.5.4 第五章

Posted 黑加仑妞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了翻译How To Tango With Django 1.5.4 第五章相关的知识,希望对你有一定的参考价值。

5数据模型和数据库

一个模型就是一个描述你数据表的python对象。不用再通过SQL来操作数据库,而是使用python对象来操作数据库。

5.1rango要求

。。。一个目录下面有多个下面

。。。一个目录有名字,访问量和喜爱量

。。。一个页面有题目,URL和一定数量的视图

5.2告诉django你的数据库

在settings.py里面进行配置,添加如下代码:

DATABASE_PATH = os.path.join(PROJECT_PATH,\'rango.db\')

DATABASES = {

  \'default\':{

    \'ENGINE\':\'django.db.backends.sqlite3\',

    \'NAME\':DATABASE_PATH,

}

}

5.3创建数据模型

在rango/models里面定义两个类。都要继承自django.db.models.Model.这两个类代表目录和页面,代码如下:

class Catetory(models.Model):

  name = models.CharField(max_length=128,unique=True)

  def  __unicode__(self):

    return self.name

class Page(models.Model):

  category = models.ForeignKey(Category)

  title = models.CharField(max_length=128)

  url = models.URLField()

  views = models.IntegerField(default)

  def __unicode__(self):

    return self.title

5.4创建并同步数据库

创建好之后我们需要通过manage.py来同步数据库,执行下面的命令:

python manage.py syncdb

成功会显示如下图

5.5生成SQL

使用命令python manage.py sql rango

5.6django模型和django shell

5.7配置admin接口

django还有一个特点就是提供了后台管理数据库中表,同样也需要在settings.py里面配置

INSTALLED_APPS = (

  \'django.contrib.auto\',

  \'django.contrib.contenttypes\',

  \'django.contrib.sessions\',

  \'django.contrib.sites\',

  \'django.contrib.messages\',

  \'django.contrib.staticfiles\',

  \'django.contrib.admin\',

  \'rango\',

)

然后运行python manage.py syncdb

完成以上步骤之后,就会有一个django_admin_log表。然后再配置工程文件夹下面的urls.py文件,文件显示如下:

from django.conf.urls import patterns,include,url

from django.conf import settings

from django.contrib import admin

admin.autodiscover()

 

urlpatterns = patterns(\'\',

  url(r\'rango/\',include(\'rango.url\')),

  url(r\'admin/\',include(admin.site.urls)),

)

if settings.DEBUG:

  urlpatterns += patterns(

    \'django.views.static\',

    (r\'media/(?P<path>.*)\',

    \'serve\',

    {\'document_root\':settings.MEDIA_ROOT}

),

)

到这里之后,我们需要告诉django的admin应用我们新建的数据模型。所以我们需要在rango下面新建一个admin.py问价。然后添加下面的代码

from django.contrib import admin

from rango.models import Catetory,Page

admin.site.register(Category)

admin.site.register(Page)

上面的代码就是给admin接口注册数据模型。再次重启django服务器,访问http://127.0.0.1:8000/admin/,会见到下面的页面,输入你之前创建的用户名和密码

5.8新建一个通用脚本

为了避免每次修改数据模型之后,都要删除数据库,可以工程根目录下面新建下面的文件populate_rango.py,添加如下代码:

import os

def populate():
    python_cat = add_cat(\'Python\')

    add_page(cat=python_cat,
        title="Official Python Tutorial",
        url="http://docs.python.org/2/tutorial/")

    add_page(cat=python_cat,
        title="How to Think like a Computer Scientist",
        url="http://www.greenteapress.com/thinkpython/")

    add_page(cat=python_cat,
        title="Learn Python in 10 Minutes",
        url="http://www.korokithakis.net/tutorials/python/")

    django_cat = add_cat("Django")

    add_page(cat=django_cat,
        title="Official Django Tutorial",
        url="https://docs.djangoproject.com/en/1.5/intro/tutorial01/")

    add_page(cat=django_cat,
        title="Django Rocks",
        url="http://www.djangorocks.com/")

    add_page(cat=django_cat,
        title="How to Tango with Django",
        url="http://www.tangowithdjango.com/")

    frame_cat = add_cat("Other Frameworks")

    add_page(cat=frame_cat,
        title="Bottle",
        url="http://bottlepy.org/docs/dev/")

    add_page(cat=frame_cat,
        title="Flask",
        url="http://flask.pocoo.org")

    # Print out what we have added to the user.
    for c in Category.objects.all():
        for p in Page.objects.filter(category=c):
            print "- {0} - {1}".format(str(c), str(p))

def add_page(cat, title, url, views=0):
    p = Page.objects.get_or_create(category=cat, title=title, url=url, views=views)[0]
    return p

def add_cat(name):
    c = Category.objects.get_or_create(name=name)[0]
    return c

# Start execution here!
if __name__ == \'__main__\':
    print "Starting Rango population script..."
    os.environ.setdefault(\'DJANGO_SETTINGS_MODULE\', \'tango_with_django_project.settings\')
    from rango.models import Category, Page
    populate()
然后使用python populate_rango.py命令执行这个文件,得到下面的结果

 


 

以上是关于翻译How To Tango With Django 1.5.4 第五章的主要内容,如果未能解决你的问题,请参考以下文章

翻译How To Tango With Django 1.5.4 第四章

翻译How To Tango With Django 1.5.4 第一章

How to Find and Write VAG 7th Byte CS with Tango Key Programmer

We explain how Tango Conquered the World

How to start with Gradle?

Docker: How to configure Docker with devicemapper