新建一个名为pizzeria的项目,添加一个名为pizzas的应用程序。
定义一个名为Pizza的模型,它包含字段name,用于存储比萨名称,如Hawaiian和Meat
Lovers。定义一个名为Topping的模型,它包含字段pizza和name,其中字段pizza是一个关联到Pizza的外键,而字段name用于存储配料,如pineapple,Canadian bacon,sausage。
向管理网站注册这两个模型,并使用管理网站输入一些比萨名和配料,使用shell来查看输入的数据。
1.F盘新建文件夹learning_pizza,并从该文件夹里打开命令行
2.创建虚拟环境:python -m venv lp_env
3.激活虚拟环境:lp_env\Scripts\activate
4.安装Django:pip install Django
5.在Django中创建项目:django-admin startproject learning_pizza .
6.创建数据库:python manage.py migrate
7.启动服务器:python manage.py runserver,此时可以打开http://localhost:8000查看
8.重新从文件夹learning_pizza里打开命令行,激活虚拟环境:lp_env\Scripts\activate
9.创建应用程序:python manage.py startapp learning_pizzas
10.定义模型Pizza和Topping:打开models.py
在最后面添加如下内容:
class Pizza(models.Model):
"""披萨名字"""
name=models.CharField(max_length=20) #name是由字符或文本组成的数据,需要存储少量的文本可用CharField,定义的时候必须告诉要预留多少空间
date_added=models.DateTimeField(auto_now_add=True) #记录日期和时间的数据
def __str__(self):
"""返回模型的字符串表示"""
return self.name
class Topping(models.Model):
"""披萨的配料"""
pizza=models.ForeignKey(Pizza,on_delete=models.CASCADE)
name=models.TextField()
date_added=models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural='Toppings'
def __str__(self):
"""返回模型的字符表示"""
return self.name
11.激活模型Pizza和Topping之添加应用程序:打开settings.py
修改
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
为
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# My apps
'learning_pizzas',
]
12.激活模型Pizza和Topping之告诉Django应该如何修改数据库:python manage.py makemigrations learning_pizzas
13.激活模型Pizza和Topping之让Django修改数据库:python manage.py migrate
14.创建超级用户:python manage.py createsuperuser
设置账号mypizza和密码
15.向管理网站注册模型Pizza和Topping:打开admin.py
在最后面添加
from learning_pizzas.models import Pizza,Topping
admin.site.register(Pizza)
admin.site.register(Topping)
16.登录http://localhost:8000/admin/看看,添加内容
17.通过Django shell查看
python manage.py shell
from learning_pizzas.models import Pizza
pizzas=Pizza.objects.all()
for pizza in pizzas:
print(pizza.id,pizza)
my_pizza=Pizza.objects.get(id=1)
my_pizza.name
my_pizza.date_added
my_pizza.topping_set.all() ----->为通过外键关系获取数据,可使用相关模型的小写名称、下划线、单词set
注:退出shell可以用ctrl+z和回车