Django博客教程之二:Admin和Models以及Views和URL

一、Models#

1、 Django Model##

每一个Django Model都继承自django.db.models.Model

在Model当中每一个属性attribute都代表一个database field

通过Django Model API可以执行数据库的增删改查,而不需要写一些数据库的查询语句

##2、 设置数据库##

Django项目建成后,默认设置了使用SQLite数据库,在 my_blog/my_blog/setting.py中可以查看和修改数据库设置,如MySQL,PostgreSQL,这里为了简单,使用默认数据库设置

 

##3、 创建models##

 

##4、 同步数据库##

应用迁移

 

出现以下提示

 

因为migrate负责执行迁移,将改变提交到数据库,makemigrations负责创建一个新的迁移,保存模型变化到一个迁移文件(migrations),和commits很类似

这里因为之前已经执行过迁移,没有新的迁移创建,所以无法进行迁移,

Makemigrations:用models里面的model和当前的migrations文件夹里面的model做对比,如果有新的修改,就生成新的一个文件,存放在项目app的migrations文件夹下面

Migrate:首次执行Migrate时,会在django数据库中自动生成一个django_migrations表,以后每次执行Migrate命令,就是对比migrations文件夹中代码文件和django数据库django_migrations表中的代码文件,将migrations文件夹中代码文件的变化更新到数据库中,同时更新django_migrations表

需要使用python manage.py makemigrations创建一个新的迁移,然后使用migrate执行迁移

 

##5、 Django Shell(数据库进行增删改查)##

进入Django的交互式shell

 

导入Article模块

 

使用objects.create()(创建对象并进行存储)进行数据库增加操作

 

使用all和get的数据库查看操作

  • objects.all()查看全部对象,返回一个对象列表

 

  • objects.get()查看符合条件的对象,返回对象

 

数据库修改操作

 

Delete数据库删除操作

 

使用filter()按题目过滤

 

使用filter()多个条件过滤

 

包含性查询

 

顺序排序

 

倒序排序

 

多个字段为标准进行排序(第二个字段会在第一个字段的值相同的情况下被用到)

 

连锁查询

 

限制返回的数据数量

 

限制返回的数据数量(类似列表的操作)

 

#二、Admin# ##1、 Admin简介##

Django内置了Django admin后台管理界面,方便管理者进行添加和删除网站的内容

##2、 设置Admin##

新建的项目系统以及为我们设置好了后台管理功能,可以在my_blog/my_blog/settings.py中查看

 

同时也已经添加了进入后台管理的url,可以在my_blog/my_blog/urls.py中查看

##3、 创建超级用户##

使用python mange.py createsuperuser创建超级用户

 

输入用户名,邮箱,密码就能够创建一个超级用户

启动应用:

 

在浏览器输入localhost:9000/admin,

 

输入账号和密码进入后台管理,登录进入

 

但是你会发现并没有数据库信息的增加和删除,现在我们在my_blog/article/admin.py中增加代码,把article模型加进去

 

admin.site.register(Article)用于将Article模型注册到admin,Django会自动生成该模型的默认表单

保存后,再次刷新页面,localhost:9000/admin

 

对于管理界面的外观的定制还有展示顺序的修改,详细可以查看官方文档

##4、 使用第三方插件##

Django现在已经相对成熟,已经有许多不错的可以使用的第三方插件,现在我们使用一个第三方插件使后台管理界面更加美观,目前大部分第三方插件可以在Django Packages中查看

尝试使用Django-admin-bootstrap美化后台管理界面

安装

 

配置

在my_blog/my_blog/settings.py中修改INSTALLED_APPS

 

global_settings是Django中的设置模块

保存后再次刷新页面,localhost:9000/admin,出错:

 

添加一行代码

 

添加后的效果如图

 

再次运行正常

 

#三、Views和URL# ##1、 网页程序的逻辑##

Request进来 –> 从服务器获取数据 -> 处理数据 –> 把网页呈现出来

url设置相当于客户端向服务器发出request请求的入口,并用来指明要调用的程序逻辑

views用来处理程序逻辑,然后呈现到template(一般为GET方法,POST方法略有不同)

template一般为html+CSS的形式,主要是呈现给用户的表现形式

##2、 简单Django Views和URL##

Django中views里面的代码就是一个一个函数逻辑,处理客户端(浏览器)发送的HTTPRequest,然后返回HTTPResponse

那么开始在my_blog/article/views.py中编写简单的逻辑

 

定义一个home函数,当有http请求时,返回字符串”Hello, World, Django”

那么如何使这个逻辑在http请求进入时,被调用呢,这里需要在my_blog/my_blog/urls.py中进行url设置

url()函数有四个参数,两个是必须的:regex和view,两个可选的:kwargs和name

regex是regular expression的简写,是正则表达式,Django将请求的URL从上至下依次匹配列表中的正则表达式,直到匹配到一个为止

view当Django匹配了一个正则表达式就会调用指定的view逻辑,上面代码中会调用article/views.py中的home函数

kwargs任意关键字参数可传一个字典至目标view

name命名你的URL,使url在Django的其他地方使用,特别是在模板中

现在在浏览器中输入localhost:9000 可以看到下面的界面

 

##3、 Django Views和URL更近一步##

很多时候我们希望给view中的函数逻辑传入参数,从而呈现我们想要的结果

现在我们这样做,在my_blog/article/views.py加入如下代码

 

在my_blog/my_blog/urls.py中设置对应的url

 

^(?P<my_args>\d+)/$这个正则表达式是将传入的一位或者多位数字作为参数传递到views中的detail作为参数,其中?P<my_args>定义名称用于标识匹配的内容

我们尝试如下URL http://localhost:9000/1000/

 

尝试传参访问数据库

修改在my_blog/article/views.py代码

 

然后访问http://localhost:9000/1/

显示如下数据标识数据库访问正确(这些数据都是自己添加的),并且注意Article.objects.all()返回的是一个列表

 

#四、实验总结#

想要理解实验的关键是要想明白我们创建的各个文件的作用

创建Models,利用Models与数据库进行数据交互

创建Admin,利用Admin来管理后台数据

url.py用来解析不同的URL,并根据不同的URL分配view.py中的函数就行处理

posted @ 2017-06-12 07:32  tiretiretire  阅读(388)  评论(0)    收藏  举报