博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django搭建网站笔记
阅读量:4290 次
发布时间:2019-05-27

本文共 2678 字,大约阅读时间需要 8 分钟。

1、使用render的时候,Django 会自动找到 INSTALLED_APPS 中列出的各个 app 下的 templates 中的文件。

小提示,DEBUG=True 的时候,Django 还可以自动找到 各 app 下 static 文件夹中的静态文件(js,css,图片等资源),方便开发

2、path和url针对不同的版本,url针对1.8版本,需要写正则表达式

django path()参数:route是一个匹配 URL 的准则(类似正则表达式)。当Django响应一个请求时,它会从urlpatterns``的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
view参数:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个:class:~django.http.HttpRequest对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
name参数:为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

3、可不写应用下的url文件,直接在项目主url下引入应用,配置url

url路由基础

1、在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址
2、path参数的使用方法path(‘blog/str:string/’) 简单了很多,就是尖括号,前边是str代表参数的类型,后面代表参数的名称

4、页面跳转流程:

首先,django在运行程序时,最开始(这里只提及初学者操作的文件,没有修改的部分将暂时忽略,毕竟真实的流程可不是这么简单的,感兴趣可以去喵喵看)当你输入正确的网络地址的时候,django会进入路由模块(urls)中去寻找是否有符合其要求的路径,auth后面跟的就是路由路径了。我们在页面地址栏中输入“localhost:8000/index/”,django会自动的寻找路由表中符合要求的后缀为“index/”的路径。
找到后,如果有index/,将会去执行这个路由后面所指向的函数。而这个函数就是view中的函数,执行函数相应的响应过程以后,必定会return返回并跳转相应页面及携带数据。(django强制要求必须return返回,强制返回主要原因是每一次网页操作,都会相应的跳转页面或交互)
看到return语句后面是不是跟着“index.html”,这就是让程序自动自行index的页面。那么来到templates文件夹中打开这个页面。(哪有templates文件夹呀,吼吼,请在创建的应用中,注意不是项目中,创建一个文件夹,动手创建一个)
恭喜你,打开index.html页面。
经过上面的步骤,可以看出,我们程序的执行流程是:路由,视图调度(V层),前端页面(HTML)。
所以我们在开发中,为了让大脑清晰,方便执行,我们从最容易观察到的前端页面视图层开始开发,这样不断能够及时的看到很好的反馈,若看不到页面,我们还能及时的找到问题出在什么地方,能够及时的做出调整。

5、表单用于搜集不同类型的用户输入,表单由不同类型的标签组成,实现一个特定功能的表单区域(比如:注册),首先应该用标签来定义表单区域整体,在此标签中再使用不同的表单控件来实现不同类型的信息输入。form定义一个表单区域,action属性定义表单数据提交的地址,method属性定义提交的方式。

6、html各元素整体介绍:https://www.cnblogs.com/tangkaishou/p/9515832.html

链接、表格、表单、框架、列表

7、CSS:做界面样式:分页、背景、布局、导航栏、表单

8、表格横向、纵向滚动条

9、 标签 href 属性:指定超链接目标的 URL,可能的值:

绝对 URL - 指向另一个站点(比如 href="http://www.example.com/index.htm")相对 URL - 指向站点内的某个文件(href="index.htm")锚 URL - 指向页面中的锚(href="#top")

10、Django通过ORM模型操作数据库返回的数据结果类型为QuerySet

11、filter函数用法

class Person(models.Model):    name = models.CharField(max_length=30)    age = models.IntegerField()

get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filter

Person.objects.filter(name="abc")  # 等于Person.objects.filter(name__exact="abc") 名称严格等于 "abc" 的人Person.objects.filter(name__iexact="abc")  # 名称为 abc 但是不区分大小写,可以找到 ABC, Abc, aBC,这些都符合条件Person.objects.filter(name__contains="abc")  # 名称中包含 "abc"的人Person.objects.filter(name__icontains="abc")  #名称中包含 "abc",且abc不区分大小写Person.objects.filter(name__regex="^abc")  # 正则表达式查询Person.objects.filter(name__iregex="^abc")  # 正则表达式不区分大小写

12、表单action参数:设置请求的网址

13、前端发起相应后,django会在urlpatterns中将url一一匹配,匹配到了合适的就进入相应的views函数中

14、ORM增删改查:https://www.cnblogs.com/yaboya/p/8919033.html

15、form表单触发提交数据的动作两种方式:

    

form提交数据的地址如何指定及方式:

'''action属性控制提交的地址	方式:		1.全路径			
2.只写路径后缀 3.不写 (默认往当前路径提交) form表单默认是get请求'''

16、运行网站

python manage.py runserver
你可能感兴趣的文章
Linux vmstat命令详解
查看>>
linux pmap命令
查看>>
MySQL数据同步【双主热备】
查看>>
Mysql主从复制实践手册
查看>>
nginx配置正向代理支持HTTPS
查看>>
Perf -- Linux下的系统性能调优神器
查看>>
C++ 用libcurl库进行http通讯网络编程
查看>>
秒杀多线程第十篇 生产者消费者问题
查看>>
信号量与互斥锁
查看>>
linux 查看CPU个数,核数
查看>>
string 序列化
查看>>
va_start(),va_end()函数应用
查看>>
crontab命令
查看>>
State Threads——异步回调的线性实现
查看>>
va_start va_end
查看>>
共享内存,共享缓冲区 一对多
查看>>
无锁队列的实现
查看>>
CAS原子操作实现无锁及性能分析
查看>>
Linux 互斥锁、原子操作实现原理
查看>>
搭建简单hls直播测试服务
查看>>