Django第二部分
我们接着上篇博文开始,设置数据库,创建第一个模型。
数据库设置
现在,打开mysite/settings.py。这是一个普通的Python模块,其中模块级变量代表Django设置。
默认情况下,配置使用SQLite。如果要使用其他数据库,请安装相应的数据库绑定并更改项目中的以下键 以匹配数据库连接设置:DATABASES ‘default’
在编辑时mysite/settings.py,请设置TIME_ZONE为您的时区。
接下来,我们要在数据库中创建一个表,运行以下命令:
python manage.py migrate
该migrate命令查看INSTALLED_APPS设置并根据mysite/settings.py文件中的数据库设置和应用程序附带的数据库迁移创建任何必要的数据库表(稍后我们将介绍这些表)。您将看到适用于每次迁移的消息。如果您有兴趣,请运行数据库的命令行客户端并键入\dt(PostgreSQL),(MySQL), (SQLite)或(Oracle)以显示Django创建的表。SHOW TABLES;.schemaSELECT TABLE_NAME FROM USER_TABLES;
创建模型
现在我们将定义您的模型 - 本质上是您的数据库布局,以及其他元数据。
在这个应用程序中,我们将创建两个模型:Question和Choice。A Question有问题和出版日期。A Choice有两个字段:选择的文本和投票记录。每个Choice都与一个Question。
这些概念由简单的Python类表示。编辑 polls/models.py文件,使其如下所示:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
**模型
要在我们的项目中包含应用程序,我们需要在设置中添加对其配置类的引用INSTALLED_APPS。该 PollsConfig班是在polls/apps.py文件中,所以它的虚线路径’polls.apps.PollsConfig’。编辑mysite/settings.py文件并将该虚线路径添加到INSTALLED_APPS设置中。它看起来像这样:
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
现在Django知道要包含该polls应用程序。让我们运行另一个命令:
python manage.py makemigrations polls
您应该看到类似于以下内容的内容:
通过运行makemigrations,我们告诉Django对模型进行了一些更改。
有一个命令可以为您运行迁移并自动管理您的数据库模式 - 这是被调用的migrate,我们马上就会看到它 - 但首先,让我们看看迁移将运行的SQL。该 sqlmigrate命令获取迁移名称并返回其SQL:
python manage.py sqlmigrate polls 0001
现在,migrate再次运行在数据库中创建这些模型表:
使用
现在我们进入交互式python shell并使用django免费提供的API。输入以下命令:
python manage.py shell
进入shell后,浏览数据库API:
polls/models.py 中输入以下代码:
from django.db import models
class Question(models.Model):
# ...
def __str__(self):
return self.question_text
class Choice(models.Model):
# ...
def __str__(self):
return self.choice_text
这些是普通的python方法,我们现在在polls/models.py 下添加一个自定义的方法:
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
保存这些更改并通过再次运行启动新的Python交互式shell :python manage.py shell
介绍django管理员
创建django用户
首先,我们需要创建一个可以登录管理站点的用户。运行以下命令:
python manage.py createsuperuser
输入所需的用户名,然后按Enter键。
Username: admin
根据提示输入电子邮箱:
Email address: [email protected]
最后输入密码,系统要求输入两次,第二次是确认。
启动开发服务器
如果服务器未运行,输入:
python manage.py runserver
打开Web浏览器并转到本地域的“/ admin /” - 例如 http://127.0.0.1:8000/admin/。您应该看到管理员的登录屏幕:
进入管理站点
现在,尝试使用您在上一步中创建的超级用户帐户登录。你应该看到Django管理员索引页面:
您应该看到几种类型的可编辑内容:组和用户。它们django.contrib.auth由Django 提供的身份验证框架提供。
在管理员中修改民意调查应用程序
但是我们的投票应用程序在哪里?它不会显示在管理员索引页面上。
只需做一件事:我们需要告诉管理员Question 对象有一个管理界面。为此,请打开该polls/admin.py 文件,然后将其编辑为如下所示:
from django.contrib import admin
from .models import Question
admin.site.register(Question)
查看管理功能
里面有各种功能,比如说增加、修改、删除等,这里我们不在一一演示。
想要深入学习请查看下篇博文,这篇内容来源于django官网。喜欢的话点个关注吧!