建立虚拟环境
python -m venv ll_env
运行模块venv,创建名为ll_env的虚拟环境
激活虚拟环境
$ source ll_env/bin/activate
在这种情况下,你可以在环境中安装包,并使用已安装的包。你在ll_env中安装的包仅在该环境处于活动状态时才可用。
关闭虚拟环境
$ deactivate
如果关闭运行虚拟环境的终端,虚拟环境也将不再处于活动状态
安装Django
pip install Django
由于我们是在虚拟环境中工作,因此在所有的系统中,安装Django的命令都相同:不需要指定标志--user,也无需使用python -m pip install package_name这样较长的命令。
别忘了,Django仅在虚拟环境处于活动状态时才可用。
在Django中创建项目
$ django-admin startproject learning_log .
让Django新建一个名为learning_log的项目。 这个命令末尾的句点让新项目使用合适的目录结构,这样开发完成后可轻松地将应用程序部署到服务器。
项目目录结构
目录learning_log包含4个文件 ,其中最重要的是settings.py、urls.py和wsgi.py。文件settings.py指定Django如何与你的系统交互以及如何管理项目。在开发项目的过程中,我们将修改其中一些设置,并添加一些设置。文件urls.py告诉Django应创建哪些网页来响应浏览器请求。
文件wsgi.py帮助Django提供它创建的文件,这个文件名是web server gateway interface(Web服务器网关接口)的首字母缩写。
它还创建了一个名为manage.py的文件,这是一个简单的程序,它接受命令并将其交给Django的相关部分去运行。 我们将使用这些命令来管理诸如使用数据库和运行服务器等任务。
创建数据库
python manage.py migrate # 通过manage.py创建数据库迁移
首次执行命令migrate时,将让Django确保数据库与项目的当前状态匹配。在使用SQLite(后面将更详细地介绍)的新项目中首次执行这个命令时,Django将新建一个数据库。Django指出它将创建必要的数据库表,用于存储我们将在这个项目(Synchronize unmigrated apps,同步未迁移的应用程序)中使用的信息,再确保数据库结构与当前代码(Apply all migrations,应用所有的迁移)匹配。
其输出表明Django又创建了一个文件——db.sqlite3。SQLite是一种使用单个文件的数据库, 是编写简单应用程序的理想选择, 因为它让你不用太关注数据库管理的问题。
运行项目
python manage.py runserver 8000
创建应用程序
Django项目由一系列应用程序组成,它们协同工作,让项目成为一个整体。
python manage.py startapp learning_logs # 创建名为learning_logs的应用程序
定义模型
# 打开learning_logs/models.py
from django.db import models
class Topic(models.Model):
"""用户学习的主题"""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""返回模型的字符串表示"""
return self.text
我们需要告诉Django,默认应使用哪个属性来显示有关主题的信息。Django调用方法str()来显示模型的简单表示。在这里,我们编写了方法str(),它返回存储在属性text 中的字符串
激活模型
要使用模型,必须让Django将应用程序包含到项目中。为此,打开settings.py(它位于目录learning_log/learning_log中) ,你将看到一个这样的片段,即告诉Django哪些应用程序安装在项目中:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
把learning_logs加入这个列表即可
INSTALLED_APPS = [
...
'learning_logs'
]
接下来需要让Django修改数据库,使其能够存储与模型Topic相关的信息
$ python manage.py makemigrations learning_logs
命令makemigrations让Django确定该如何修改数据库,使其能够存储与我们定义的新模型相关联的数据。 输出表明Django创建了一个名为0001_initial.py的迁移文件, 这个文件将在数据库中为模型Topic创建一个表。
接下来迁移数据库
$ python manage.py migrate