首页 > 代码库 > 第一节:整体介绍

第一节:整体介绍

  Python版本3.5.2,Django版本1.10

  创建一个Django工程,并且生成一个名字为mainsite的app

django-admin.py startproject myblogpython3 manage.py startapp mainsite

  文件结构如下:

x-power@xpower-CW65S:~/chen/myblog$ tree ././├── mainsite│   ├── admin.py│   ├── __init__.py│   ├── migrations│   │   └── __init__.py│   ├── models.py│   ├── tests.py│   └── views.py├── manage.py└── myblog    ├── __init__.py    ├── __pycache__    │   ├── __init__.cpython-35.pyc    │   └── settings.cpython-35.pyc    ├── settings.py    ├── urls.py    └── wsgi.py4 directories, 13 files

  介绍一下比较重要的几个文件的用途:

    manage.py    :    Django用于管理网站配置的文件,是一个接受命令行指令的工具集程序。

    setting.py      :    就像他的名字一样是用于对网站的配置进行设置的。(有些地方可能我的理解也不正确欢迎指正,批评!)

    urls.py           :    用来设置每一个URL 的网址要对应的函数以及对应的方式,通常是创建一个新的网页的时候首要编辑的文件。

    wsgi.py          :    是用于部署网站时候用的和主机中网页服务器的沟通接口(如Apache)。

  真正的网站运行逻辑都在我们创建的App里面(这里是mainsite),这个App也体现了Django的Reuse的概念。

  我们已经创建了App但是Dajngo还是不知道有这个App的,我们在setting.py中加入这个App。

INSTALLED_APPS = (    django.contrib.admin,    django.contrib.auth,    django.contrib.contenttypes,    django.contrib.sessions,    django.contrib.messages,    django.contrib.staticfiles,    mainsite,)

  然后修改最后的时区设置,默认时区是Django的诞生地,我们先让他倒时差,学习中文。

LANGUAGE_CODE = zh-CNTIME_ZONE = Asia/Shanghai

  Django自带了一个数据库Sql.lite。是一个超小型数据库,一般情况下都会用其他数据库的。现在我们先用这个数据库。

  执行以下文件会看到生成了一个db.sqllite3的文件。

 1 x-power@xpower-CW65S:~/chen/myblog$ python3 manage.py migrate 2 Operations to perform: 3   Synchronize unmigrated apps: messages, staticfiles 4   Apply all migrations: admin, auth, sessions, contenttypes 5 Synchronizing apps without migrations: 6   Creating tables... 7     Running deferred SQL... 8   Installing custom SQL... 9 Running migrations:10   Rendering model states... DONE11   Applying contenttypes.0001_initial... OK12   Applying auth.0001_initial... OK13   Applying admin.0001_initial... OK14   Applying contenttypes.0002_remove_content_type_name... OK15   Applying auth.0002_alter_permission_name_max_length... OK16   Applying auth.0003_alter_user_email_max_length... OK17   Applying auth.0004_alter_user_username_opts... OK18   Applying auth.0005_alter_user_last_login_null... OK19   Applying auth.0006_require_contenttypes_0002... OK20   Applying sessions.0001_initial... OK

  在默认的情况下Django的数据库是通过Model的方式去操作的(这也是我爱Django的一点。),也就是在程序中不会直接面对数据库和数据表,而是先创建好Model,然后通过对Model的操作达到操作数据库的目的。这样做日后可以很方便的更换数据库。(总感觉哪里有点不对,日后就换?)

使用数据库大概分为以下几步:

  1. 在models.py中定义需要使用的类(继承自models.Model)
  2. 详细的设置每一个类中的变量,即数据表的每一个字段
  3. 使用python3 manage.py makemigrations创建数据库和Django的中介文件。
  4. 使用python3 manage.py migrate 同步更新数据库的内容。
  5. 操作python定义的类就相当于操作数据库了。

如同my_blog这个名字的意思一样,在这里我们需要有一个储存博文的数据表。

  最初的时候models.py文件的内容就是这些。

from django.db import models# Create your models here.

修改之后内容如下:

from django.db import modelsfrom django.utils import timezone# Create your models here.class Post(models.Model):    title = models.CharField(max_length = 200,verbose_name = 标题)    slug = models.CharField(max_length = 200,verbose_name = 作者)    body = models.TextField(verbose_name = 内容)    pub_date = models.DateTimeField(default = timezone.now,verbose_name = 发表时间)        class Meta:        verbose_name="文章内容"                # 后台表的名称        verbose_name_plural = "文章内容"        ordering = [-pub_date]    # 排序        def __str__(self):        return self.title    # 在 Admin界面显示的内容

verbose_name 自己试一下应该可以知道是将原来的名字给换了一下,换成中文。

在设计好表之后,执行makemigrations和migrate操作,然后创建一个超级用户,

python3 manage.py createsuperuser

登陆进去添加五篇文章。

  

第一节:整体介绍