基于Django快速构建Web项目
本章主要记录怎么用Django快速构建一个web项目,所有的内容也是本人亲自构建,整个项目完美运行。
项目地址见:https://github.com/blacksider/django-startup
1. 环境准备
操作系统:Windows10 x64
python版本:3.7
VisualStudio版本:VS2017 Community
IDE: PyCharm 2017.1.2
2. 项目说明
项目搭建的方案选择前后端分离的构建方式,后端使用djangorestframework,前端使用Angular6
3. 搭建后台
pip3 install django
设置项目,执行 ‘django-admin startproject server .’,创建一个启动项目,执行后文件结构类似于:
...
server/
__init__.py
settings.py
urls.py
wsgi.py
manage.py
此命令为 django 内置的命令,可以帮助开发者快速构建一个启动项目;
注意命令行后面的 ‘.’,表示在当前目录下创建项目,否则会生成一个结构 ‘server/server/’;
现在可以直接启动项目,测试项目是否可以运行,执行 ‘python manage.py runserver’,可以看到控制台中弹出了如下的信息:
Performing system checks...
System check identified no issues (0 silenced).
You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 15, 2018 - 11:08:12
Django version 2.1.1, using settings 'server.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
现在访问地址 ‘http://127.0.0.1:8000/ ’ ,可以看到django的默认启动页面了。
但是可以看到控制台信息中有一行提醒 ‘You have 15 unapplied migration(s)’,这是因为 django 本身内嵌了很多关于用户和权限的数据结构,并且 django 默认使用的数据库为 sqlite3,所以它会尝试初始化相关的 Model ,根据提示,先删除掉刚才启动时创建的文件 db.sqlite3,执行 ‘python manage.py migrate’,可以看到重新生成了一个 db.sqlite3 文件,通过 PyCharm 的 Database 视图连接此文件,可以看到项目中创建如下表:
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
sqlite_master
sqlite_sequence
这些即是 django 本身需要的数据库表了,再次执行 ‘python manage.py runserver’,可以看到提醒 migration 的信息消失。
现在,已经拥有一个可以运行的后端项目了,下面需要将数据库替换为其他数据库,这里使用 postgresql 作为此项目的数据库;
首先,删除掉刚才生成的 db.sqlite3 文件,然后打开文件 server/settings.py ,找到 DATABASES 配置项,这里默认的内容如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
现在,需要将其替换为 postgresql 的配置,修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'testdb',
'USER': 'testdbuser',
'PASSWORD': 'test',
'HOST': 'localhost',
'PORT': '',
}
}
在 postgresql 中创建对应的数据库和用户信息后,执行 migration 操作 ‘python manage.py migrate’,然后再启动项目,确定项目无异常。
现在我们可以创建一个默认的超级用户,使用如下的命令
python manage.py createsuperuser --email admin@test.com --username admin
这里我们创建一个用户名密码均为 admin 的用户,打开文件 server/urls.py,可以看到如下内容:
urlpatterns = [
path('admin/', admin.site.urls),
]
此处的配置为 django 的一个内置的页面链接,可以自行查看一下该内容,该链接会打开一个默认的admin登录页面,可以