windows端django学习日记2——设置数据库,创建第一个model,对django自动生成的管理站点做简要介绍

数据库相关
在 mysite/settings.py中,包含了对于数据库的相关设置,如果不想使用python自带的Sqlite,就需要更改一些设置。

鉴于初学,为不增加负担,我没有对数据库设置做任何更改。
只需执行命令:py manag.py migration

此命令的作用是,根据在mysite/settings.py中的设置,django自动为app生成必要的table(数据库中的表)

创建模板
定义必要的模板,数据库层级,额外的元数据
这里定义question和choice两个模板,每一个choice对应一个question,由两个类实现

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)

notes:
1.实现model的类都继承了django.db.models.Model
2.实现model的类中含类变量,如question_text,在数据库中有一个相应的字段
3.每一个字段由一个Field类的实例实现;它告诉django每一个字段将hold什么类型的数据
4.Field实例的名字就是字段的名字,在python代码中将被使用
5.可以通过位于第一个位置的可选参数设定字段的名字,如DateField(‘date published’),如果不设定,则会自动生成一个machine-friendly的名字
6.一些字段需要一些参数,如CharField()的实例
7.这里 ForeignKey指定了choice与question一对一的关系

激活model
1.在配置类mysite/settings.py中,告知django我的app:polls;daima代码如下:
不要忘了逗号!

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

2.告知django,model发生了改变,并将存储这些改变:

py manage.py makemigrations polls

3.将改变应用于数据库,即使django自动在数据库中为model创建对一个的表和字段

py manage.py migrate

创建admin user,来管理app,visitor不能进入相关页面

py manage.py createsuperuser

windows端django学习日记2——设置数据库,创建第一个model,对django自动生成的管理站点做简要介绍_第1张图片

4.将我的polls加入admin页面,使superuser可以进行管理:
打开polls/admin.py,输入如下代码,在admin站点注册了model中的Question对象

from django.contrib import admin

from .models import Question

admin.site.register(Question)

5.编写visitor能访问的页面.html文件
6.在polls/views中编写视图函数,如:

def detail(request):
	return render(requests,'polls/XXX.html')

7.在polls/urls中编写视图相应的url:

urlpatterns[
	path('detail/',views.detail)
]

path的第一个参数为i字符串,与主url后相匹配;第二个参数为调用的视图。

你可能感兴趣的:(django学习日记)