1、创建app
django中的一个app就是一个小的项目,我们通过startapp命令即可创建。可以进入虚拟环境myblog中执行:
python manage.py startapp myblog
也可以直接在pycharm中的Tools下的run manage.py task下直接执行命令:
startapp myblog
这样就可以创建出一个根目录下的名为myblog的app了。然后,我们将其加入到setting.py中的INSTALLED_APPS中,如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myblog', #新建立的app
]
2、迁移数据库
Tools下的run manage.py task下依次直接执行命令:
makemigrations
migrate
当我们执行了 makemigrations 后,Django 在 myblog 应用的 migrations\ 目录下生成了一个 0001_initial.py 文件,这个文件是 Django 用来记录我们对模型做了哪些修改的文件。
不过此时还只是告诉了 Django 我们做了哪些改变,为了让 Django 真正地为我们创建数据库表,接下来又执行了migrate 命令。Django 通过检测应用中 migrations\ 目录下的文件,得知我们对数据库做了哪些操作,然后它把这些操作翻译成数据库操作语言,从而把这些操作作用于真正的数据库。
经过这两项操作后,我们打开navicat中的myblog数据库表单,发现多了如下表单,这些表单为Django 自身还内置的很多应用,这些应用本身也是需要存储数据的。
auth_group,
auth_group_permissions,
auth_permission,
auth_user,
auth_user_groups,
auth_user_user_permissions,
django_admin_log,
django_content_type,
django_migrations,
django_session
我们在执行迁移数据库的操作时,发现会弹出如下警告:
WARNINGS:
?: (1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your default TEMPLATES dict: TEMPLATE_DIRS.
这是因为django版本的问题产生的,解决方法按照提示操作,打开setting.py,将如下语句删掉:
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
并将templates的位置添加到TEMPLATE中:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
...
即可。
——————————————————————————————————————————
项目的完整代码:django_blog
觉得有用的欢迎给个star。