Python版本3.5.2,Django版本1.10
创建一个Django工程,并且生成一个名字为mainsite的app
django-admin.py startproject myblog python3 manage.py startapp mainsite
文件结构如下:
[email protected]:~/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.py 4 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-CN‘ TIME_ZONE = ‘Asia/Shanghai‘
Django自带了一个数据库Sql.lite。是一个超小型数据库,一般情况下都会用其他数据库的。现在我们先用这个数据库。
执行以下文件会看到生成了一个db.sqllite3的文件。
1 [email protected]:~/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... DONE 11 Applying contenttypes.0001_initial... OK 12 Applying auth.0001_initial... OK 13 Applying admin.0001_initial... OK 14 Applying contenttypes.0002_remove_content_type_name... OK 15 Applying auth.0002_alter_permission_name_max_length... OK 16 Applying auth.0003_alter_user_email_max_length... OK 17 Applying auth.0004_alter_user_username_opts... OK 18 Applying auth.0005_alter_user_last_login_null... OK 19 Applying auth.0006_require_contenttypes_0002... OK 20 Applying sessions.0001_initial... OK
在默认的情况下Django的数据库是通过Model的方式去操作的(这也是我爱Django的一点。),也就是在程序中不会直接面对数据库和数据表,而是先创建好Model,然后通过对Model的操作达到操作数据库的目的。这样做日后可以很方便的更换数据库。(总感觉哪里有点不对,日后就换?)
使用数据库大概分为以下几步:
- 在models.py中定义需要使用的类(继承自models.Model)
- 详细的设置每一个类中的变量,即数据表的每一个字段
- 使用python3 manage.py makemigrations创建数据库和Django的中介文件。
- 使用python3 manage.py migrate 同步更新数据库的内容。
- 操作python定义的类就相当于操作数据库了。
如同my_blog这个名字的意思一样,在这里我们需要有一个储存博文的数据表。
最初的时候models.py文件的内容就是这些。
from django.db import models # Create your models here.
修改之后内容如下:
from django.db import models from 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
登陆进去添加五篇文章。