• 用django搭建一个简易blog系统(翻译)(二)


    03. Starting the blog app

      在这部分,将要为你的project创建一个blog 应用,通过编辑setting.py文件,并把它添加到INSTALLED_APPS。

    在你的命令行终端上,输入下面命令:

    django-admin.py startapp blog

    如果一切按照预期进行,你将有下面的文件目录。进入到blog目录下面。

    Django做了如下事情:

    * blog/__init__.py : 空文件,但是是python的特殊文件

    * models.py : 用来定义你blog model 的文件

    * views.py : 用来定义view函数

    * tests.py : 对你的开发来说,很好的东西,但是今天的教程不涉及

    We'll wrap up this section of tutorial with a final task. 在settings.py文件中,有一个元组叫做INSTALLED_APPS, 这个元组用来告诉django都有什么app在project中。你应该打开settings.py文件,修改INSTALLED_APPS, 让你的blog应用在INSTALLED_APPS列表中。把你的本地应用放在列表的后面是一个好的习惯。修改你的settings.py,让它像下面这样:

    你现在已经创建了blog应用,并且将它添加到了INSTALLED_APPS中,现在是时间写一些models,相当于数据库。

    04.Writing the blog models

      当你使用Django的时候,你不用写SQL。你只需要写models。在这部分,将会介绍你关于django的models。

      Models用来生成数据库表,而且它有很多ORM(object relational mapping)API用来从数据库提取数据,或者插入数据。

      打开你的blog目录里面,打开models.py文件,修改该文件,让它的内容想下面这样:

    from django.db import models
    from django.core.urlresolvers import reverse
    
    class Post(models.Model):
        title = models.CharField(max_length=255)
        slug = models.SlugField(unique=True,max_length=255)
        description = models.CharField(max_length=255)
        content = models.TextField()
        published = models.BooleanField(default=True)
        created  = models.DateTimeField(auto_now_add=True)
    
        class Meta:
            ordering = ['-created']
    
        def __unicode__(self):
            return u'%s' % self.title
    
        def get_absolute_url(self):
            return reverse('blog.views.post', args=[self.slug])

      好的,你刚刚已经创建了你的blog model. 你给它赋予了各种各样的属性用各种field的组合。

    花一点时间,根据我下面给出的链接看看下面每种field响应的django文档,想想每一个我们给出的参数是什么意思。

    * title 和 description 都是model.CharField https://docs.djangoproject.com/en/1.4/ref/models/fields/#charfield

    * slug 是 models.SlugField https://docs.djangoproject.com/en/1.4/ref/models/fields/#slugfield

    * content 是 models.TextField https://docs.djangoproject.com/en/1.4/ref/models/fields/#textfield

    * published 是 models.BooleanField https://docs.djangoproject.com/en/1.4/ref/models/fields/#booleanfield

    * created 是 models.DateTimeField https://docs.djangoproject.com/en/1.4/ref/models/fields/#datetimefield

      我们同时给我们的model 类一些方法。第一个是__unicode__ ,被用来向人显示类对象的。技术上来说, 这个方法返回一个unicode 对象,因为你刚刚涉及django或者python,所以不打算展开unicode。如果想进一步了解,请戳入 https://docs.djangoproject.com/en/dev/ref/unicode/#choosing-between-str-and-unicode

      第二个方法是get_absolute_url,当我们要链接特定的post地址,用来返回url的

      你应该注意到了内部类Meta。这个是用来设置model类应该按照什么来排序的。在这篇教程里面的例子,Post 对象被用created时间来排序。“-”符号就是告诉Django按照降序排序对象。

      下面的就是你刚刚已经完成的事情:

    * 创建了一个blog model

    * 阅读一些关于model field的文档

    * 了解每一种方法做了什么

    * 避免了学习unicode的痛苦

    有人提到数据库吗?

    05. Creating the database

      数据库是很多web应用的基础,Django也不例外。在这部分教程教你如何配置django数据库设置然后用django管理命令同步数据库和models。

      配置django项目用settings.py。所以打开这个文件,在DATABASES字典里,打开在文件的12行,修改它让它符合下面的样子:

      

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
            'NAME': 'netmag.db',                      # Or path to database file if using sqlite3.
            # The following settings are not used with sqlite3:
            'USER': '',
            'PASSWORD': '',
            'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
            'PORT': '',                      # Set to empty string for default.
        }
    }

      你刚才配置django使用sqlite数据库后台,而且告诉数据调用数据库netmag.db。我选择这个数据库后台,因为它需要最少的配置最适合像这样的教程了。然而,你如果想让这个项目真正上线,那你可能需要选择数据后台PostgreSQL 或者 mysql,但是这个改天在研究了。

      配置好数据库设置了,你现在就可以创建你的数据库了。因为这是你一次同步数据库和model所以你可能会被问到要不要创建一个管理员账号。这个你将在下一节用到。请记住你的输入的用户名和密码,放心,你这里输入的消息不回被泄露的。

      切换到命令行终端,输入下面命令:

    python manage.py sycndb
    

      在你的项目根目录下面,你会发现出现了一个新的文件叫做netmag.db。这就是你的数据库,你的blog posts就被存储在这里。所以不要删除它!!

      切换到浏览器,刷新,没有什么东西改变。还一样是空白的。在下一节,我们将通过添加admin完善这一部分。但是现在,先看看你这部分已经完成了什么:

    * 配置数据库设置

    * 第一次运行syncdb命令创建数据库

    * 创建一个管理员账号,这个账号将用来登录admin

  • 相关阅读:
    利用webpack构建vue项目
    关于写毕业设计网页代码写后感
    用canvas属性写一个五角星哦
    css3瀑布流布局
    css3学习笔记,随时帮你记起遗忘的css3
    自己做得一个用于直观观察css3 transform属性中的rotate 3D效果
    第一次讨论——关于块级元素与行内元素的区别,浮动与清除浮动,定位,兼容性问题
    软件工程第一次作业
    自我介绍
    自我介绍
  • 原文地址:https://www.cnblogs.com/Happy-Tuesday/p/3352311.html
Copyright © 2020-2023  润新知