zoukankan      html  css  js  c++  java
  • 【翻译】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命令执行这个文件,得到下面的结果

    
    

  • 相关阅读:
    Java中Runnable和Thread的区别
    Callable,Runnable比较及用法
    如何实现视差滚动效果的网页?
    【175】Easy CHM的使用
    【174】C#添加非默认字体
    【173】双显示器随便切换位置
    【172】outlook邮箱设置
    【171】IDL读取HDF文件
    怎样实现二级联动
    Java 23种设计模式详尽分析与实例解析之二--结构型模式
  • 原文地址:https://www.cnblogs.com/yingqml/p/6185284.html
Copyright © 2011-2022 走看看