2019-03-23 python 管理网站

# Django 18.2.3 Django管理网站

* 管理网站(admin site),管理员使用,普通用户不能使用

1. 创建超级用户(权限决定用户可执行的操作)

[image:C539CB95-035D-492F-B1E8-2173C202D7D7-331-00001112820D6BA4/屏幕快照 2019-03-23 下午8.24.21.png]

python manage.py createsuperuser

2. 向管理网站注册模型

[image:F6102FF2-38BA-43DE-9ABB-C195E83A0EDD-331-000011BA7B878175/屏幕快照 2019-03-23 下午8.36.19.png]

在models.py所在的目录中打开admin.py文件,为了向管理网站注册topic,输入以上代码。使用admin.site.register()让django通过管理网站管理模型。

[image:649AE071-4AE4-4BB0-AB92-0252F4F63DFB-331-000011D49E1334E2/屏幕快照 2019-03-23 下午8.38.13.png]

3. 添加主题

[image:99E97F03-F215-45AD-AFDD-3648578CB0B3-331-000011EB0BB98993/屏幕快照 2019-03-23 下午8.39.47.png]

为topic添加主题,点击save

[image:DD7029E7-FF5C-4142-9A86-1C9EEDD0DE76-331-000011FA7ECC08EC/屏幕快照 2019-03-23 下午8.40.56.png]

*18.2.4 定义模型Entry*

* 为用户可在学习笔记中添加的条目定义模型,每个条目都与特定主题相关联,多对一关系,即多个条目可关联到同一个主题。

[image:4C92D1C3-00D5-4748-B32F-A1DD97549136-331-000012CC8EDA17FC/屏幕快照 2019-03-23 下午8.59.07.png]

1. entry也继承了django基类Model。

2. 属性topic是一个foreignkey实例。

3. ForeignKey外键是一个数据库术语,引用了数据库的另一条记录。

4. text = models.TextFied()是实例

5. date_added让我们能够创建顺序呈现条目,并在每个条目旁边放时间戳。

6. meta类,存储用于管理模型的额外信息,在这里,它让我们能够设置一个特殊属性,让django在需要时使用entries来表示多个条目。

7. 方法__str__()高数django,呈现条目时应显示哪些信息。让django只显示text前50个字符,还添加了省略号,指出显示的并非整个条目。

*18.2.5 迁移模型entry*

[image:C747E99B-7CD9-4A94-A83F-5504BF60214A-331-000014D3556BB957/屏幕快照 2019-03-23 下午9.36.16.png]

python manage.py make migrations app_name进行修改,

再执行命令python manage.py migrate。

1. 首先生成了一个新的迁移文件—-0002_entry.py,它告诉django如何修改数据库,使其能够存储于模型entry相关的信息。

2. 执行命令migrate,发现django应用了这种迁移切一切顺利。

*18.2.6 向管理网站注册entry*

1. 注册模型entry,修改admin.py

[image:900057C8-9983-4E41-93E4-079861F0824E-331-000015108FC754CC/屏幕快照 2019-03-23 下午9.40.39.png]

* 进入网站,然后entries进行创建。

[image:D7541729-C596-47F0-BF3C-BFB86BABAF15-331-0000151A4C258D20/屏幕快照 2019-03-23 下午9.41.20.png]

[image:2C6B7647-135E-49EC-AC7A-FCDC69ECE113-331-00001579FA0245E8/屏幕快照 2019-03-23 下午9.48.12.png]

*18.2.7 Django shell*

* 输入一些数据,就可通过交互式终端会话以编程的方式查看这些数据。交互环境称为django shell,测试项目和排除其故障的理想之地。

[image:CDDA369B-639F-4D1D-A3BA-0C4F372A35DA-331-000015C6F32E4893/屏幕快照 2019-03-23 下午9.53.40.png]

1. 命令python manage.py shell启动一个python解释器,探索存储在项目数据库的数据。

2. 这里导入了模块learning_logs,models种的模型topic

3. 使用方法topic.objects.all()来获取模型topic的所有实例;返回一个列表,称为查询集。

---

### 练习:

* 18-2简短条目:

在__str__()添加if语句,以便近在条目长度超过50字符时,才添加省略号。

[image:24D10CD3-9F6D-4ADC-A278-6E596955E071-331-00001808512E6C90/屏幕快照 2019-03-23 下午10.35.45.png]

---

* 散列值(每当输入密码,django都计算其散列值,并将结果与存储的散列值进行比较)

你可能感兴趣的:(2019-03-23 python 管理网站)