1、初阶(一)

一、安装

pip install django

二、创建第一个django项目

在想要创建项目的目录下,按shift 右击空白处,打开命令窗口,

django-admin startproject Test

文件Test中创建好的目录如下

|-- Test
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

各个文件的说明

urls.py   网址入口,关联到对应的view.py中的一个函数或(或者generic类),访问网址就对应一个函数
view.py   处理用户发出的请求,从urls.py,通过渲染templates中的网页可以将内容显示,比如登录胡后的用户名,用户请求的数据,输出到网页
models.py 与数据库操作有关,存入或读取数据时用到这个
forms.py  表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作
admin.py  后台
settings.py 配置文件,比如debug的开关,静态文件的位置等

三、创建一个应用(app)

1、新建一个名为learn的app

之后,会在Test项目下多出一个文件夹,名称是learn

然后修改Test文件夹中的settings.py文件

这一步的原因是django不能自动找到app中的模板文件(app-name/templates)和静态文件(app-name/static/中的文件)???

2、定义视图函数(访问页面时的内容)

修改views.py文件

参数request很重要,与网页发来的请求有关,包含get或post的内容,用户浏览器系统信息在里面。

3、定义视图函数相关的URL

用以规定访问什么网页返回什么内容,修改urls.py

上述步骤完成之后,执行以下命令

结果如下

如果打开http://127.0.0.1:8000/, 就可以看到

四、在网页上做加减法

1、采用/add/?a=4&b=5这样get方法进行

修改calc/views.py文件

request.GET 类似于一个字典,更好的办法是用 request.GET.get('a', 0) 当没有传递 a 的时候默认 a 为 0

接着修改zqxt_view/urls.py文件,添加一个网址来对应我们新建的视图函数。

打开服务器并访问,

结果如下

打开网页http://127.0.0.1:8002/add/,会看到一个复杂的网页

然后打开http://127.0.0.1:8002/add/?a=4&b=5,会得到计算的结果

2、采用/add/3/4的网址形式

修改calc/views/py 文件,定义一个新函数

然后在urls.py文件中添加一个新的url

接着打开网址http://127.0.0.1:8002/add/4/5/,就可以得到跟之前一样的结果

五、URL name详解

1、打开zqxt_views/urls.py

name='add' : name可以用于在templates,models,views...中得到对应的网址

2、添加calc_views.py

3、将‘calc’这个app加入到zqxt_views/setting.py中

4、在calc中新建一个templates文件夹,在templates中新建一个home.html,并写入内容

修改zaxt_views/urls.py

有时使用的规则是/add/4/5,后来需求发生变化,比如改成/4-add-5/(-代表'_',打不出来),但是在很多代码中都是根据/add/4/5,比如模板中写的是

为了避免修改一处而导致很多其他部分也要修改的情况,所以可以选择另外一些更好的方式,不过首先介绍如何将参数转换为url

reverse接收url中的name作为第一个参数,我们在代码中就可以通过 reverse() 来获取对应的网址(这个网址可以用来跳转,也可以用来计算相关页面的地址),只要对应的 url 的name不改,就不用改代码中的网址。

提取参数,做形式的转换?

在网页模板中

当修改urls.py 进行更改,前提是不改name,获取的网址也会动态的跟着变

path是寻找网址对应的功能,当网址发生变化时,只需要修改path中的佩佩字段即可,这样add2的调用仍会返回正确的结果;但是home.html中的不能理解,调用html明明是index函数,href部分的参数何时传入的?

比如说收藏的url是旧的,如何跳转到新的网页?需要我们写一个跳转方法

首先在views.py中增加一个跳转方法

修改urls.py

我觉得上面这一部分讲得并不清楚,暂时搁置

Last updated

Was this helpful?