码迷,mamicode.com
首页 > 其他好文 > 详细

Django基础知识二

时间:2017-08-28 23:48:02      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:继承   等等   return   一件事   primary   结束   font   按钮   ice   

技术分享

别名

 

url

技术分享

views 写一个对应的reg函数,这个函数进来第一件事应该是给客户端返回一个页面。
 
所以先写一个Html
技术分享
这个action写的是/reg/
然后继续写函数
技术分享

技术分享

之所以上面的action处直接写/reg/可以使用,不用写上具体的ip+port是因为
当客户点击submit的时候,浏览器会将前面的Ip和端口自动补全,这个ip和端口是服务器提供的。
=======================================
 
别名这个操作是在url里写的。
因为url里的地址和html里的action地址对应,如果不对应则找不到,所以写个别名会很方便。

技术分享

html里的写法:
技术分享
上面这个Html写法是固定的,就这么写。
 
=======================================
视图函数
在视图函数中总会出现两个
一个是请求对象:request
一个是相应对象:httpresponse(")
其中在request中有个method方法
request.method 确认请求方式
request.GET 存放GET数据 get会显示在url中
request.POST 存放post请求数据 这两种都是以字典的形式
 
httpresponse(") 实例字符串对象,只能返回字符串
render 模板渲染
redirect 跳转
render和redirect只是反悔的方式 最终还是需要用httpresponse的方式返回字符串为介质传给客户端。
 
 
 
render的使用
return render(request,index.html)
 
模板语言:
渲染变量 {{ }}
渲染标签 { % % }
 
模板语言的目的:将变量嵌入到html页面中
技术分享
字典{"times":t} 这个times是html中渲染的位置,t代表后端views.py中的变量
所以这个t就相当于上面那个datetime.datetime.now(),将这个传给了html页面
 
 
redirect
 
比如登录之后跳转到首页

技术分享

上面红框,建议用get取,如果取不到为none,不会报错,用中括号取字典里的值如果取不到会报错。
下面红框为redirect的使用方法,后面跟一个路径。
render和redirect这个区别
render相当于渲染
redirect是路径,如果用的render只是返回一个网页,刷新之后还会跳到登录页面。
redirect则不然,相当于path做了更改。redirect之后跳到index首页的时候,index函数里
应该从数据库取到用户对应的个人信息。如下:

技术分享

如果用render的话,没有走index函数,则直接返回一个网页,没有找到模板语言中的变量。
所以总结为:第一如果用render,刷新会变到之前的网页,第二个区别是没有走index函数。
所以说redirect走的是路径,会将函数走一遍,render只是返回一个html。
 
============================================================
模板
 
模板就是html+逻辑代码
 
深度查询
 
在views函数中如果有列表,字典,将这些传给了前端,如果想在模板中取出单独的某一个值,
可以用句点号来取,如下图

技术分享

技术分享

如上图,在函数中写一个类,然后实例化3个对象,然后返回一个列表,
列表中写三个对象,将这个集合对象返回给前端。
技术分享
如上图,可以通过locals()来简写,效果同上面那行一一对应的。
技术分享
单独取上面的对象,通过列表名querySet来取,结果为egon
 
----------------------------------------------------
循环取
{% for person in querySet %} #两段注意空格
    <p> {{ person.name }}</p> #注意写大括号
{% endfor %}

 

 

 
判断语句
 
1 {% if i > 100 % }
2     <p>100</p> #如果i大于100 直接打印100
3 {% elif i > 50 %} #注意 比大小的表达式必须也空格
4     <p>大于50小于100</p>
5 {% else%} #否则打印变量i
6     <p>{{ i }}</p>
7 {% endif%} #判断结束

 

======================================================================
数据库与ORM
对象关系映射
目的:通过Python代码实现对数据库的增删改查

技术分享

如上图,orm原理相当于,一个类就相当于一个表,一个对象就相当于一行内容
一个属性就相当于一个字段。对表的操作就是对一个类和对象操作。这里面有一个映射关系。
通过映射关系翻译成sql语句。

技术分享

如上图,对应关系。实例化一个对象,就是创建一条记录。
p.save() 相当于保存一下。
 
数据库配置
 
sqlite3
mysql
 
配置的时候绑定了什么引擎,它就会翻译成相应的sql语句。
如果需要更改数据库的时候,迁移一下就OK。

技术分享

如上图,这次先用sqlite3,用什么数据库无所谓,因为不需要写sql语句,只是用orm操作。
 
项目流程:
设计表关系:
create table book(
id int primary key,
name varchar(20),
price double(5,2),
)
 
首先在models.py里创建一个类,这个类就是表名。
创假的这个类必须继承django的orm的一个类,不然无法使用。
继承models.Model

技术分享

如上图,这个表结构写好。
现在在cmd中执行两条命令:
python manage.py makemigrations 建立对应关系
python manage.py migrate 执行sql语句
此时还不需要启动项目,等一切准备结束之后再启动项目。
 
在应用目录的migrations目录中生成了一个文件,django默认在表中设置一个id为名字的主键,有自增(AutoField),PRIMARY_KEY=True.
如果自己创建的时候创建了主键,那么系统不会在给你创建主键。
 
在pycharm中下载好插件之后

技术分享

将文件拖过去 即可打开这个表,在pycharm中查看这个表。
 
 
配置静态文件:
技术分享
将所有bootstrap,js等文件都放到static中。
如下图,在模板文件中写上如上两点,能够导入静态文件。
技术分享

技术分享

上图,static是别名,后面跟具体文件。
 
在django中,某个button按钮外面套一个a标签,在href中写上你想跳转的网页路径,
如果是同一个网站的路径,可以简写/index/等等,然后在url中 写上/index/对应的相应的函数即可。
 
所有访问服务端请求默认都是GET请求。

 

Django基础知识二

标签:继承   等等   return   一件事   primary   结束   font   按钮   ice   

原文地址:http://www.cnblogs.com/ArmoredTitan/p/7442341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!