本文学习自菜鸟教程
注意:
由于格式的限制,文中的大括号被分别替换为
1 | { } |
所以在阅读的过程中遇到上述字符请勿紧张
step 0:安装
在已经安装好python和pip的的条件下安装django,直接pip install django (pip时可以加个国内源,加快下载速度)
step 1:实践
第一个Django项目:hello world(/偷笑)
使用django-admin管理工具创建项目
1 | django-admin startproject 项目名 |
目录说明:
- HelloWorld: 项目的容器。
- manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
- HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
- HelloWorld/settings.py: 该 Django 项目的设置/配置。
- HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站”目录”。
- HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
然后进入项目所在路径下执行
1 | python manage.py runserver 0.0.0.0:8000 |
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,输出结果如下:
在Hello_World/Hello_World目录新建个view.py文件,并输入
Django项目最好采用M(odel)V(iew)C(ontroller)设计模式,来提高应用程序的灵活性和可控制性。此处使用 django.http.HttpResponse() 来输出 “Hello World!”。该方式将数据与视图混合在一起,不符合 Django 的 MVC 思想。
然后绑定url与视图函数。修改urls.py文件,如下
重新启动一下项目,就可以得到hello world啦
补充:Django的path()函数。
1 | path(route, view, kwargc=None, name=None) |
- route: 字符串,表示 URL 规则,与之匹配的 URL 会执行对应的第二个参数 view。
- view: 用于执行与正则表达式匹配的 URL 请求。
- kwargs: 视图使用的字典类型的参数。
- name: 用来反向获取 URL。
Django2. 0中可以使用 re_path() 方法来兼容 1.x 版本中的 url() 方法,一些正则表达式的规则也可以通过 re_path() 来实现 。
step 2:Django模板
模板的标签:
if/else 标签
基本语法格式如下:
1 | { % if condition %} |
或者:
1 | { % if condition1 %} |
根据条件判断是否输出。if/else 支持嵌套。
{ % if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:
1 | { % if athlete_list and coach_list %} |
for 标签
{ % for %} 允许我们在一个序列上迭代。
与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。
每一次循环中,模板系统会渲染在 { % for %} 和 { % endfor %} 之间的所有内容。
例如,给定一个运动员列表 athlete_list 变量,我们可以使用下面的代码来显示这个列表:
1 | <ul> |
给标签增加一个 reversed 使得该列表被反向迭代:
1 | { % for athlete in athlete_list reversed %} |
可以嵌套使用 { % for %} 标签:
1 | { % for athlete in athlete_list %} |
ifequal/ifnotequal 标签
{ % ifequal %} 标签比较两个值,当他们相等时,显示在 { % ifequal %} 和 { % endifequal %} 之中所有的值。
下面的例子比较两个模板变量 user 和 currentuser :
1 | { % ifequal user currentuser %} |
和 { % if %} 类似, { % ifequal %} 支持可选的 { % else%} 标签:8
1 | { % ifequal section 'sitenews' %} |
注释标签
Django 注释使用 { # #} 。
1 | { # 这是一个注释 #} |
过滤器
模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:
1 | { { name|lower } } |
{ { name } } 变量被过滤器 lower 处理后,文档大写转换文本为小写。
过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:
1 | { { my_list|first|upper } } |
以上实例将第一个元素并将其转化为大写。
有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:
1 | { { bio|truncatewords:"30" } } |
这个将显示变量 bio 的前30个词。
其他过滤器:
addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,实例:
1
{ { pub_date|date:"F j, Y" } }
length : 返回变量的长度。
include 标签
{ % include %} 标签允许在模板中包含其它的模板的内容。
下面这个例子都包含了 nav.html 模板:
1 | & |
模板继承
模板可以用继承的方式来实现复用。
step 3:Django模型
首先装个数据库mysql比较常用。不过在manjaro上mysql有好多坑,mariaDB保平安。(/偷笑)
mysql的安装:
1 | sudo pip install mysqlclient |
数据库配置:
在settings.py文件里修改DATABASES为:
1 | DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django 'NAME': 'test', 'USER': 'test', 'PASSWORD': 'test123', 'HOST':'localhost', 'PORT':'3306', } } |
定义模型
创建APP
Django规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:
1 | django-admin startapp TestModel |
修改TestModel/models.py文件代码如下:
1 |
|
settings.py中找到INSTALLED_APPS这一项:添加”TestModel”
在命令行中运行:
1 | python manage.py migrate # 创建表结构 |
看到几行 “Creating table…” 的字样,你的数据表就创建好了。
数据库操作
添加数据
添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT
获取数据
1 |
|
数据更新
修改数据可以使用 save() 或 update():
1 | # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE |
删除数据
删除数据库中的对象只需调用该对象的delete()方法即可:
1 |
|
step 4:Django表单
同菜鸟教程,需要注意的是,在GET方法中菜鸟教程上使用的是Django2版本,其中在编写search.py时需要将文中render_to_response改成render。并修改search_form函数,return render(request,’seach_form.html’)
版权声明:转载请注明出处!
文章说明: 文章如有不足或者纰漏之处,欢迎留言斧正!