Django入门------------------------------------------创建应用程序

在安装好Django框架的前提下,创建应用程序,一个Django项目是由一系列的应用程序组成的。

在终端窗口里运行的runserver,再打开一个终端窗口,切换到manage.py所在的目录,激活该虚拟环境,执行starapp APPname ,这个让Django创建应用程序的所需的基础设施。

在这里创建一个learning_logs的应用程序,输入“ls learning_logs/”,看到有以下文件,admin.py  apps.py models.py tests.py views.py/

1.定义模型:

模型告知Django如何处理应用程序中存储的数据,可以这样想,它就是个类。

在文件夹里打开models.py,编写一个用户储存主题的模型:

#-*-coding:utf-8-*-
from django.db import models

# Create your models here.
class Topic(models.Model):
	#用户学习的模型
	text=models.CharField(max_length=200)
	date_added=models.DateTimeField(auto_now_add=True)
	
	def __str__(self):   #返回模型的字符串表示
		return self.text

 现在模型建立好了,就要激活模型,打开settings.py,在INSTALLED_APPS=里进行修改:加上自己添加的应用程序。

-----------
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'learning_logs',  #我的应用程序
]
----------

修改数据库,让它能够存储模型Topic相关的信息,在终端窗口里输入修改数据库的命令

makemigrations appname,就可以修改数据库,这里生成0001_initial.py的迁移文件,将在数据库为topic创建一个表;

迁移项目,输入migrate,这里需要注意的是applying learning_logs.0001_initial....是不是OK,这里表示迁移正常

只要修改项目的数据是,都是三部曲:1.修改models.py 2.对应用程序调用makemigrations;3.让Django迁移项目

2.Django管理网站

Django提供的(admin site)能轻松处理模型,这里为项目奖励管理网站,并使用它为模型添加一些主题

先创建管理员,也就是超级用户,拥有所有的权限, 

像上面一样输入就可以创建了管理员。

再向管理网站注册模型,我们自己创建的模型是需要手动进注册,打开admin.py,注册模型:

from django.contrib import admin
#-*-coding:utf-8-*-
# Register your models here.
from learning_logs.models import Topic

admin.site.register(Topic)

 现在,在浏览器里输入http://127.0.0.1:8000/admin回车,输入刚刚创建的管理员号码与密码,

 

添加主题,单击浏览器界面里的Topics进入主题网页,单击add,输入创建的主题,单击save,返回主题管理界面。

 

新定义一个entry模型,要记录学到的多个知识,就要为用户定义一个条目定义模型, 每个条目都与特定的主题相关联。

在models.py编写代码:

#-*-coding:utf-8-*-
from django.db import models

# Create your models here.
class Topic(models.Model):
	#用户学习的模型
	text=models.CharField(max_length=200)
	date_added=models.DateTimeField(auto_now_add=True)
	
	def __str__(self):   #返回模型的字符串表示
		return self.text
class Entry(models.Model):
	#学到的有关某个主题的具体知识
	topic=models.ForeignKey(Topic,on_delete=models.CASCADE)
	text=models.TextField()
	date_added=models.DateTimeField(auto_now_add=True)
	
	class Meta:
		verbose_name_plural='entries'
	
	def __str__(self):
			return self.text[:50]+"..."

在entry模型里,topic属性是一个外键,外键是数据库术语,它可以引用数据库的另一条记录,关联起来。嵌入一个meta类,存储用于管理模型的额外信息。

就像上面说的,修改了模型,就要进行三部曲。

 

注册entry模型:

from django.contrib import admin
#-*-coding:utf-8-*-
# Register your models here.
from learning_logs.models import Topic,Entry

admin.site.register(Topic)
admin.site.register(Entry)

打开浏览器,输入,看到界面如下:

单击Entries的add,看到有下拉列表,可以选择哪个主题,然后添加文本框信息 。这里创立2个chess和1个rock climbing。

可以通过交互式终端用编程的方式查看数据,------Django shell。

 

方法Topic.objects.all()可以获取模型Topic的所有实例,返回一个查询表。也可以打印主题的ID属性和字符串表示。

每次修改模型后,都要重启shell,退出shell,win系统是ctr+z.再按回车键。

猜你喜欢

转载自blog.csdn.net/shinhwa96/article/details/84961970
今日推荐