sqlite2 – Django基础

一、Django流程

       Django是运用python编写的web框架,遵守MTV设计思想。

       实现原理:

                   1,浏览器发起呼吁。

                   2,Django根据URL Conf指向view(Views)

                   3,view进行数据操作(Models)

                   4, 页面的切切实实渲染交予模版处理(Templates)

                   5, 浏览器根据返回的数展示网页内容

sqlite 1

    

次、Django创建项目

       在桌面创建一个啊website的型:

             cd desktop
             django-admin startproject website

       项目组织也:

sqlite 2 

      下面创建一个下,名字叫blog

            cd website
            python3.6 manage.py startapp blog

       项目目录也:

sqlite 3

 

老三、运行项目

      python3.6 manage.py runserver

sqlite 4

      在网页遭到输入127.0.0.1:8000

sqlite 5

 

      如何点击run运行品种。如下图:

sqlite 6

 

sqlite 7

       点击OK,然后点击绿色小箭头运行。

sqlite 8

 

季、项目增长到安装

      
在面创建了项目blog,我们要拿品种以安中配备一下,让Django知道管理了那些项目,在website/settings.py目录下之INSTALLED_APPS中,我们得以添加blog,如下图:

       sqlite 9

       
从高达图备受我们可以看,Django下已经部署好了一部分类别,如‘django.contrib.admin’后台管理体系,例如我们当浏览器中输入127.0.0.1:8000/admin,结果而下图所示:

sqlite 10

 

五、URLS和Views

      
在转的文本中,有一个urls.py和views.py,其中她两者关系密切。如文章开始写道,浏览器发起呼吁,通过urls文件能够配合到相应的view,它们是什么样干的吧?

      
首先我们于blog下创办一个urls.py文件,在Mac下,可以采用快捷键command+n

       此时我们在views.py编写如下代码:

      sqlite 11

         在blog/urls.py下编制如下代码:

sqlite 12

          其构思是只要我们在浏览器被输入:127.0.0.1:8000/blog/home

         
看urls.py中的代码,我们配合到了home,home对承诺home_page,这样即使对准诺交了对应的view上。

         
有某些需注意,我们启动项目之时段,对应之urls.py应该是website下的urls.py,不是blog下之urls.py,在settings.py我们得望就一点,如下图:

sqlite 13

 

        
我们用开的是,可以以website下之urls.py能够针对许到blog下之urls.py,具体代码如下:

sqlite 14

     
再次总结一下,通过setting.py对承诺交了website下之urls.py,通过urls.py下的include,我们对诺交了blog下之urls.py,通过blog下的urls.py我们可对应之应和的view,此时咱们而当浏览器被输入:127.0.0.0:8000/blog/home,执行结果如下:

sqlite 15

六、Templates

      
为了加强代码的可读性,我们一般将代码HTML/CSS代码独立出来。一般html文件在templates文件夹下,我们首先在路遭到初打一个文本夹,命名吧templates。

      
接着我们得改website下的settings.py下的TEMPLATES,将’DIRS’:[],修改要下图:

sqlite 16

      
在templates下,建立一个html,例如命名吧hello.html,并下如下代码:,如下图:

sqlite 17

      其中views.py和urls.py中的代码如下:

sqlite 18

sqlite 19

         此时我们在浏览器中输入127.0.0.1:8000/blog/hello,结果如下:

sqlite 20

         
上述执行结果,时间不当,我们需要到settings.py中安装TIME_ZONE为’Asia/Shanghai’。

七、Models

     
Django支持的数据库来sqlite3,mysql,oracle,postgresql等,sqlite3凡是放数据库,无需安装,在斯以sqlite数据库也例。

     
在Models.py中建立一个类似,Article,Django会根据这个近乎创建数据表和字段。

      sqlite 21

        执行python3.6 manage.py makemigrations
,会冲model建立一个migration档案,当migrate执行时,可以创新数据库。如下图:

sqlite 22

     

         可以查blog下migrations文件夹:

sqlite 23

 

8、Admin

     在我们创建项目的当儿,已经创造了后台管理体系,参考上述四。

     为了登录后台,我们需要创造一个特级管理员,命令如下:

sqlite 24

     此时我们可以动用创造的账号及密码登录后台(127.0.0.1:8000/admin):

sqlite 25

sqlite 26

           
从点可以见到,没有我们创建的Article,我们需要让后台知道怎样model需要后台管理,我们得于blog下的admin.py中注册Article这个model,如下图:

sqlite 27

        结果如下:

sqlite 28

             可以本着失编辑,例如:

sqlite 29

 

            当我们上加同漫漫记下,如下图:

    sqlite 30

 

         当记录比较多,不易辨别,我们得以采取def
__str__修改Article表示方法,修改blog/models.py,如下图:

sqlite 31

     结果如下:

        sqlite 32

 

九、Template Tags

       
为了扭转完整网页,有时用以template中履行有python代码,例如判断语句,循环语词,Django
template tags可以用于html中。可以兑现动态存取从view
function传递过来的参数。

        这小节实现自数据库被读取数据,在界面显示。

       
首先在views.py中上加index,在template中添加index.html文件,切记不要忘记在urls.py中配置url(r’^$’,index),,如下图:

sqlite 33

sqlite 34

        上述执行结果吧使图:

 sqlite 35        
通过Article.objects.all()获取具有数据,并且传入index.html这个模版中。观察上图,可以见见article_list以list显示,为了展示每条article,需要动用for这一个template
tags,具体实现见下图:

sqlite 36

      执行结果如下:

sqlite 37

    
从上图可以看到显示的凡图的链接地址,如果我们纪念展示图片,可以怎么显得,如下图:

sqlite 38

       执行结果如下:

        sqlite 39

            如果没图,可以下if判断

             {% if article.photo
%}

               <div class =
‘image’>

                       <img src =
‘{{article.photo}}’ alt = ”>

               </div>

               {% else %}

                <div class =
‘default’>

                </div>

               {% endif %}

 

十、Dynamic URL

      
在第九小节我们由数据库中读取出所有数据,然后以界面显示,如何让各一个article有一个独的链接,通过链接可以拜道具体详情。

      
在views.py中,添加article_detail,(根据主键获取相应的article,然后传递至html页面)如下图:

sqlite 40

 

      
urls.py中,如何配合,比如在浏览器输入127.0。0.1:8000/blog/article/1造访第一首article,\d代表一个阿拉伯数字,+代表一个以上,\d+代表一个之上的阿拉伯
数字,如2,4,99抵。(?P<pk>)表示把及时同弄错内容抓取出来,命名为pk,整体意思是抓取一个阿拉伯数字命名也pk,这样咱们可以根据pk值获取到现实article,然后于html界面展示。如下图:

sqlite 41

      如果pk不存,访问会现出转手状,如下图:

      sqlite 42

 

十一、后续

         
为了写来优质的界面,需要会css,js等,目前初学Django,在念之过程中参考了重重素材。其中于典型的资料有:

         
https://www.djangoproject.com/

         
http://www.djangobook.com/en/2.0/(英语)

         
http://djangobook.py3k.cn/chapter01/(汉语))

          同时为参照了有些博客园、简书上面的文章等。

 

 

    

 

网站地图xml地图