Django学习笔记(一)

Django是一个网站后端框架,使用起来确实方便,之前也看着别人的博客试着用过Flask,但还是觉得Django好,其中一点就是Django的Model都给你做好了,没有必要再去自己建Model,节省了数据库的构造时间,这里是Django官方文档,如果有小伙伴在看这篇笔记,那么需要忍受一下几点:

1)作者是初学者,所以有许多不全或者不正确的理解,也许之后会改正;

2)这篇笔记只是将我对工程结构的理解写了下了,所以有很多具体的函数使用等等都没有详细介绍,也许你会和我学习的时候一样,看的一头雾水,但是你所做的是只需要理解一些结构性的东西就好,而且我也希望可以在这方面帮助你;

============================================================================

注:本系列笔记基于Mac platform,工具为shell+vim,这份笔记基本是按照官方的tutorial整理的;

一、Django的主要工程架构

简而言之是MTV(Model,template,view)

二、创建工程

如果要新建一个Django工程,可以在终端输入:

django-admin startproject [projectname]

方括号里是你的工程名,建立好以后在当前目录下就可以看见自己的工程文件夹了。在这个里面最开始可以看见一个manage.py文件和一个与工程同名的文件夹,前者几乎和你之后的所有工程交互都有关,比如数据库构造、迁移、创建超级用户(管理员)等等;后者是一个真正包含你的工程的文件夹。其实还有一个sqlite数据库文件,是django工程默认使用的数据库,如果工程比较小的话,可以只用这个,其实为了方便,可以先使用这个数据库存储信息,等完工后,可以再迁移到其他数据库。要实现这个非常简单,之后的笔记会提到。文件结构是这样的:


三、创建Web-App

Django可以帮助你自动创建一个Web应用,只需要如下命令:

python manage.py startapp [appname]

之后便会自动在当前目录下自动形成一个Web应用的基本文件结构,比如这样:


说一下主要的文件:

1)views.py文件正如其名,可以在里面编写一些你想要在网页上体现的功能,用来响应网页请求的;

2)models.py文件则是用来存储数据库模板的;

3)test.py文件用来测试应用,之后可以在里面编写测试函数;

当views文件写好之后,还需要一些链接地址来对应它们,这时候可以在同目录下创建一个urls.py文件,内容可以是这样:


这还不够,因为这些链接只是存在于某个应用中的,如果要链接到当前工程,那么显然要想办法添加到工程的url里去,前面知道主工程下有个urls.py文件,修改如下:


上面的incude函数不是随便用的,只有在导入的是外部包时才会使用它。关于url函数,这里也给出一些说明:

"""函数包含4个参数,regex,view,kwargs,name,解释如下:

regex:一个给出的正则表达式;

view:一个给定的view函数,也就是之前Web应用文件夹里的views文件里的那些函数;

kwargs:链接前缀;

name:给当前链接命名,之后这个名称是属于全局的,但是实际工程中是有多个应用的,所以为了避免多义性,我们会在之前添加一个域的说明,app_name = 'polls',便可以避免多义性;"""

四、编写应用

1.设置数据库

数据库的配置在工程目录下的setting.py文件里,光改完这个还不够,如果是使用mysql的话,由于官方把原来python的数据库接口应用改名了,所以要在主工程的__init__.py文件里写点东西:(不过在这之前一定要记得安装python的mysql接口)


__init__.py文件要添加的信息


这些做完之后,可以用如下语句将原来数据库的信息迁移到新的数据库上面:

python manage.py migrate

2.创建model

模板的创建可以在models文件下编辑你想要的信息,实例如下:


其实相当于数据库建立的脚本,当你把想要的模板写好之后就可以使用如下指令,将你的脚本编译,之后在数据库建立对应的数据库,指令如下:

python manage.py makemigrations

需要注意的是每次你对这个模板脚本进行了改动如果想要对数据库进行更新的话都得执行这条语句,

3.装配Web应用到工程

就是将你创建的Web应用同步到工程,这里需要更改配置文件,比如如下实例:


以后每次你想要添加应用配置,都可以在这个list的第一条添加你的应用配置,配置格式是:[app_name].apps.['app_name'Config],至于为什么格式是这样,很简单,这个其实是一个路径,去对应的文件下看看就知道为什么了。

4.在Python交互环境下使用你创建的model

如果想要自动的使用结合了django的python交互环境,那么在终端启动python的时候需要在当前工程目录下启动,而且指令应当是:

python manage.py shell

如果要在数据库中创建一个对应的对象,那么每次的对象创建应当是这样的,给个实例:

>>>Question.objects.create(question_text='name', pub_time=timezone.now())

也就是每次都得应用objects来创建对象,之后执行:[object_name].save()命令就可以保存对象了。由于本人Python目前学了点皮毛,还不知道这个语法的实际原理。

5.创建超级用户(管理员)

一句话的事情,直接贴代码:

python manage.py createsuperuser

之后你就知道怎么做了

让你的工程跑起来:

python manage.py runserver

默认是8000端口,这里可以自己修改,直接跟在runserver后面就好,比如:

python manage.py runserver:9000

在Safari上打开:localhost:8000/admin就可以看见管理员页面了,第一次你会看不到你建立的model,因为你还没有注册到admin里面去,可以这样改:


这是注册模块的过程,之后就可以在后台管理界面看见Question的选项


五、创建模板

在某个应用文件夹下创建一个templates文件夹,之后再在templates下创建一个和应用同名的文件夹,这样做是因为Django会自己搜索匹配到自己找到的第一个templates,而这些templates的查找前提是在已经安装的应用里搜索的,那么如果没有一个用来区分的子文件夹,可能会出错。

文件夹创建完之后,在子文件夹里便可以编写自己需要的模板了,给出实例:


关于以上的语法规则可以参照官方文档

最后是一些小技巧:

1)不要使用一些“硬代码”,所谓“硬代码”,就是给定了一些参数,比如下面这样的情况:

<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>

我们可以换成这个样子:

<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>

因为detail函数对应这个链接,所以我们可以直接使用函数名,前提是这个函数名(准确的来说是链接名)是在之前的url里面指定了的,才可以这样用。同样,为了避免二义性,我们会在detail的前面给出限定域:

<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>

基本就这些了,详细的参照官方文档的tutorial1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值